2009-11-24 6 views
7

내 문제는 다음과 같습니다.Objective-C - 예상대로 작동하지 않는 정수 비교

네트워크에서 JSON 문자열을 수신하고 있습니다. (SBJSON 라이브러리를 사용하여) 디코딩 될 때, 그것은 'userid'키를위한 정렬을 포함해야하는 NSDictionary가됩니다. 내가 int, NSINTEGER 또는 NSNumber 값을 비교할 때 올바르게 평가되지 않기 때문에 'should'라고 말합니다. 나는 -1로 테스트하고 사전 내부

NSDictionary *userDictionary = [userInfo objectAtIndex:indexPath.row]; 

if ([userDictionary objectForKey:@"userid"] == -1) { 
//Do stuff 
} 

값 : 여기

코드의 비교입니다. NSLog를 사용하여 콘솔에 출력하면 심지어 -1입니다. 그러나 'if'문에서 -1과 비교하면 true 일 때 false로 평가됩니다. 나는 [NSNumber numberWithInt : -1]과 비교해 보았고, 여전히 false로 평가됩니다.

내가 뭘 잘못하고 있니? 도와 주셔서 미리 감사드립니다.

답변

16

정수 자체가 아닌 포인터를 개체와 비교합니다. 먼저 개체를 정수로 변환해야합니다.

if ([[userDictionary objectForKey:@"userid"] integerValue] == -1) 
{ 
    //Do stuff 
} 
관련 문제