왜 BAD_ACCESS 오류가 발생합니까?NSDictionary에 여러 유형의 객체가 값으로 포함될 수 있습니까?
다른 NSDictionary를 포함하여 NSDictionary의 값으로 다른 유형의 객체를 가질 수 있습니까?
왜 BAD_ACCESS 오류가 발생합니까?NSDictionary에 여러 유형의 객체가 값으로 포함될 수 있습니까?
다른 NSDictionary를 포함하여 NSDictionary의 값으로 다른 유형의 객체를 가질 수 있습니까?
당신은 NSDictionary
에 객체의 모든 유형을 넣을 수 있습니다. 따라서 @"fred"
은 정상이지만 1
은 정수가 아니기 때문에 개체가 아닙니다. 당신이 사전에 숫자를 넣어하려는 경우, NSNumber
에 포장 :
NSDictionary *header = { @"title": @"fred", @"count": @1 };
당신이 가지고있는 방식대로. 숫자 1은 원시이며 NSArray 객체는 객체 만 저장할 수 있습니다. "1"에 대한 NSNumber를 만든 다음 저장합니다.
NSDictionary
단지 그것이 대물-C 객체를 포함 할 수있다 (예 NSString
NSArray
과 같이), 이는 int
, float
또는 char*
같은 기본 유형을 포함 할 수 없다. 이러한 제약 조건을 감안할 때 이기종 사전은 완벽하게 합법적입니다. 당신이 키 또는 값과 같은 숫자 1
을 포함 할 경우
, 당신은 NSNumber
로 포장해야합니다
NSDictionary *header=[[NSDictionary alloc] initWithObjectsAndKeys:
@"fred", @"title",
[NSNumber numberWithInt:1], @"count",
nil];
유일한 요구 사항은 그 객체 수입니다. 코드에서 객체를 올바르게 처리하는 것은 사용자의 몫이지만, 키에 따라 유형을 추적 할 수 있습니다.
1이 (가) 객체가 아닙니다. 사전에 숫자를 넣으려면 NSNumber로 변환 할 수 있습니다.
흥미 롭습니다. 저는 C#에서 모든 것이 대상이되는 데 익숙합니다. 감사. – ChrisP