2012-05-18 4 views
12

과 함께 허용되지 않습니다. errormessage가 표시됩니다. 'int'에서 'NSNumber *'로의 암시 적 변환이 ARC와 함께 허용되지 않습니다.iOS int의 NSNumber 로의 암시 적 변환이 다음 코드에서 ARC

내가 잘못하고있는 것은 무엇입니까?

<pre> 
<code> 
    NSDictionary *results = [jsonstring JSONValue]; 
    NSNumber *success = [results objectForKey:@"success"]; // possible values for "success": 0 or 1 

    if (success == 1) { // ERROR implicit conversion of int to NSNumber disallowed with ARC  
    } 
</code> 
</pre> 

도움이나 힌트를 보내 주셔서 감사합니다!

안부, 다니엘

답변

14

당신은 [success intValue] == 1를 사용해야합니다. NSNumber는 클래스이므로 number는 직접 값이 아니라 포인터입니다.

+0

감사합니다. 그것은 운동했다. – Raja

25

에로 당신은 int으로 NSNumber을 비교하고 있기 때문이다.

같은 시도 -

if ([success isEqual:[NSNumber numberWithInt:1]]) 

또는

if ([success intValue] == 1) 
+1

시도 할 수 있습니다, 당신은 포인터를 비교하는 것 구별되는 객체의 값. 두 번째 비교에서는 [success isEqual : [NSNumber numberWithInt : 1]] '또는 더 나은 결과를 원합니다. – DarkDust

+0

지적 해 주셔서 고마워, 내가 이것을 편집 할 것이다. – rishi

3

NSNumber은 객체 (즉 포인터)이므로 1과 같은 정수 리터럴과 비교할 수 없습니다. 대신 당신이 숫자 개체에서 int 값 추출해야 : 부울을 표시해야

if ([success intValue] == 1) { 
    ... 
} 
1

success 경우를, 당신은 첫 번째 비교는 잘못이

NSDictionary *results = [jsonstring JSONValue]; 
NSNumber *success = [results objectForKey:@"success"]; 

if ([success boolValue]) { 
    // success! 
} 
관련 문제