2010-01-15 8 views

답변

10

Dave's response ~ previous question까지 마찬가지입니다. NSDictionary에 double 값을 저장하려면 NSNumber에 상자를 써야합니다.

는 다음과 같은 코드를 사용하는 것, 사전에 두 배 값을 설정하려면 :

[someDict setObject:[NSNumber numberWithDouble:yourDouble] forKey:@"yourDouble"]; 

및 사용하여 다시 읽어 다음

double isTrue = [[someDict objectForKey:@"yourDouble"] doubleValue]; 
1

브래드 라슨의 응답이 정확히 맞아 . 이것에 대해 좀 더 자세히 설명하려면 개체가 필요한 것으로 작업 할 때 비 객체 번호 유형 (예 : int, unsigned int, double, float, BOOL 등)을 NSNumber에 명시 적으로 "마무리해야합니다.

그러나 KVC (Key-Value Coding)와 같은 Objective-C의 일부 메커니즘은 자동으로이 배치를 수행합니다. 예를 들어

, 당신은 intProperty라는 유형 int@property을 가지고, 당신은 NSObject (NSKeyValueCoding)[ someObject valueForKey:@"intProperty" ] 같은 valueForKey: 메소드를 호출하는 경우, 반환 결과는 NSNumber * 아닌 int 될 것입니다.

솔직히 Objective-C에서 객체와 비 객체 유형 (특히 structenum s!) 사이를 전환하는 데 신경 쓰지 않습니다. 나는 오히려 모든 것을 하나의 대상으로 다루고 싶지만, 아마도 그것은 나일 것입니다. :)

관련 문제