2012-02-29 4 views
2

프로그래밍 경험이있는 사람이라면이 질문을하는 것이 어려울 것입니다. 나는 방금 objective-c로 며칠 전부터 놀기 시작했고 NSDictionary에 NSNumber 객체를 추가하려고합니다. 문제는 NSNumber 객체에 음수 값을 추가하면 마치 NSNumber가 아닌 문자열로 추가되는 것처럼 보입니다.NSDictionary에 음수 NSNumber 값 추가

testDict = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithDouble:-3],@"x", 
             [NSNumber numberWithDouble:7, @"a", 
            nil]; 

내가 1. 정말 두 가지 질문이 생각) 당신이 음의 값을 갖는의 NSNumber 객체를 생성 할 방법이 있나요 : 여기

내가 사전을 초기화하고 어떻게?

2) 나는 다음 내가 할 사전 인쇄 경우 : -3 주위

NSLog(@"dictionary = %@", self.testDict); 

a = 7; 
x = "-3"; 

왜 따옴표를?

+0

이 testDic = 컴파일되지 않습니다 코드를 자신의 라인입니다. 그것은 빠졌어요]. 비슷한 구조가 아닌'[NSNumber numberWithDouble : -3], @ "x"'및 [NSNumber numberWithDouble : 7, @ "a", nil]'도 있습니다. – Almo

+0

'numberWithDouble : 7' 뒤에 작은 대괄호가 없어졌습니다. – jonkroll

답변

3

정확합니다. 모든 것이 정상입니다. 그것은 오해의 소지가있는 사전 - 설명입니다.

는 (: 아이폰에 입력 경고) : 확인하려면 NSLog()에 침입 시도하려면

p [testDict objectForKey:@"x"]; 

그것은이의 NSNumber 인스턴스 수를 공개해야한다.

2

@Conrad 슐츠는

확인하는 또 다른 방법은 (당신이 NSLog에 사전을 통과 할 때 무슨 일이 일어나고있다)에있는 NSDictionary에 대한하여 description 방법은 사전에 내용을 인쇄하는 방법 단지 유물의 오른쪽입니다 모든 것이 실제로 예상대로 작동하는 것은 사전 구성원을 반복하고 개별 개체의 설명을 인쇄하는 것입니다. 그러면 음수 설명이 문자열이 아닌 숫자처럼 보입니다.

NSDictionary* testDict = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithDouble:-3],@"x", [NSNumber numberWithDouble:7], @"a", nil]; 

NSArray *keys = [testDict allKeys]; 
for (NSString *key in keys) { 
    NSLog(@"%@ => %@", key, [testDict objectForKey:key]); 
} 

콘솔 출력은 다음과 같습니다 나를 귀찮게 무슨

2012-02-29 12:38:39.544 test10[1055:f803] x => -3 
2012-02-29 12:38:39.546 test10[1055:f803] a => 7