2011-01-25 5 views
13

NSInteger가 유효하다는 것을 어떻게 확인할 수 있습니까?NSInteger! = nil

NSInteger previousScore = [[self score] integerValue]; 
    if (previousScore != nil) { 
     //do something 
    } 
+0

인사말이 제거되었습니다. "다음에 시간을내어 감사하십시오." –

답변

14

, 당신은 뭔가를 할 것입니다.

+0

고마워요. 좋은 생각이야. 배열에서 모든 것이 NSNumber 여야하므로 plist에서 읽고 있습니다. – intomo

12

NSInteger는 개체가 아닙니다. 그것은 단순히 타입 변환 된 프리미티브 int입니다. 따라서 결코 nil이 될 수 없습니다. int을 똑바로 사용하는 것과 똑같이 취급하십시오.

편집 : 64 비트 시스템에서 NSInteger 실제로 long 및 32 비트 시스템에이 int입니다입니다, 세자르의 의견에 따라 상세히 설명합니다. 당신이 객체가 아닌 프리미티브 값을 다시 받고으로이 작동

NSNumber *previousScore = [self score]; 

if (previousScore != nil) { 
    NSInteger previousScoreValue = [previousScore integerValue]; 
    // do something 
} 

: 코드에서 유효성을 확인하려면

+2

은 다음과 같이 정의됩니다. #if __LP64__ typedef long NSInteger; #else typedef int NSInteger; endif –

+5

실제로 많은 경우 NSInteger는 nil이므로 nil이 0과 같기 때문에 기본적으로 컴파일러 경고를 얻을 수 있습니다. [자체 점수] nil ... –

+0

유감스럽게도 nil 0입니다 이전 Score 주어진 예제 코드에서 0 (없음) 될 것입니다. "po nil == 0"디버거에서 시도하십시오. "사실"이라고 인쇄합니다 – nont