2014-08-30 3 views
-1

사용자 지정 클래스가 있습니다. 이 클래스의 속성을 주어진 태그별로 반환하는 NSDictionary 유형의이 클래스 속성에 추가하려고합니다. 그러나 나는 그것을 할 수 없다. 그것은 가능하거나 불가능합니까? 나는 오류가 있습니다사용자 지정 클래스 개체로 사전 만들기

[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]' 

CODE :

@interface Car : NSObject 
@property (nonatomic, strong) NSNumber *topic; 
@property (nonatomic, strong) NSNumber *car; 
@property (nonatomic, strong) NSDictionary *variables; 
@end 

@implementation Car 
- (NSDictionary *)variables 
{ 
return @{ 
     @"781" : _topic, 
     @"782" : _car, 
}}; 
@end 
+2

당신 '변수들 '을 읽기 전용 속성으로 만드는 것이 좋을 것입니다. – jlehr

+0

@jlehr 제가 동의하는 동안 [이 대답] (http://stackoverflow.com/a/10758831/2792531y)은 중요하지 않을 수도 있습니다. – nhgrif

답변

3

당신은 당신이에 (아마도 초기화되지 않은/할당되지 않은 객체) nil를 삽입하려고하기 때문에이 오류가 있어요 Objective-C 콜렉션은 할 수 없습니다. Objective-C 컬렉션에 nil을 표시해야하는 경우 대신 [NSNull null]을 사용해야합니다.


추가 한 코드에 따르면 변수를 초기화하지 않은 것이 문제입니다.

이 문제가 다른 곳에서, 그리고 당신이 뭔가 (? 아마도 init에서) 몇 가지 점에서 이러한 초기화하는 것이 아니라 오류가 다시 발생하지 않는다는 것을 확신 할 필요가, 당신은이 작업을 수행 할 수 있습니다

- (NSDictionary *)variables { 
    return @{ 
     @"781" : _topic ?: [NSNull null], 
     @"782" : _car ?: [NSNull null], 
    } 
}; 
+0

봐, 내가 몇 가지 코드를 추가 –

+0

@ avfvadfvfnvadlfjnvadlf 내 대답을 업데이 트했습니다. – nhgrif

+0

nhgrif, 고마워, 어떻게이 클래스의 인스턴스 _topic 변수 값을 반환 할 수 있습니까? –