2009-08-07 3 views
1

이것은 아마도 매우 간단 할 수 있습니다. 그러나 어째서 나는 그것을 이해할 수 없습니다. 아래 코드를 실행하면 if 문으로 들어갈 수 없지만 xcode에서 디버거 콘솔에 들어가서 po [resultObject valueForKey:@"type"]을 실행해도 0을 반환합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 당신의 도움을 주셔서 감사합니다!objective-c if 문

NSManagedObject *resultObject = [qResult objectAtIndex:i]; 

if (([resultObject valueForKey:@"type"])== 0) { 
    //do something 
} 

답변

8
주위에 여분의 괄호가 필요하지 않습니다를 int로 NSManagedObject 캐스팅을 시도 할 수

valueForKey:의 결과는 항상 객체이며 0 인 유일한 객체는 nil입니다. 숫자 값의 경우 NSNumber가됩니다. 어쨌든 [[resultObject valueForKey:@"type"] intValue]을 묻고 싶습니다.

+0

감사합니다! 이것은 완벽하게 작동했습니다! 나는 그것이 이처럼 단순한 것임을 알았다. – ABB

0

당신 (실제로 무엇을 먹으 렴 ... 경우)

는 또한 당신은 []

NSManagedObject *resultObject = [qResult objectAtIndex:i]; 

if ((int)[resultObject valueForKey:@"type"] == 0) { 
    //do something 
} 
+0

개체가 nil인지 본질적으로 원래 예제와 동일한 지 여부 만 확인합니다. 객체의 값이 0인지 확인하지 않는 경우 – Chuck