2010-08-11 56 views

回答

28

一個NSNumber例如可能的幫助。例如:10.3後

if (yesNoOrNil == nil) 
{ 
    NSLog (@"Value is missing!"); 
} 
else if ([yesNoOrNil boolValue] == YES) 
{ 
    NSLog (@"Value is YES"); 
} 
else if ([yesNoOrNil boolValue] == NO) 
{ 
    NSLog (@"Value is NO"); 
} 

在所有Mac OS X平臺和所有iPhone OS平臺上,-[NSNumber boolValue]方法保證返回YES或NO:

NSNumber *yesNoOrNil; 

yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES 
yesNoOrNil = [NSNumber numberWithBool:NO]; // set to NO 
yesNoOrNil = nil; // not set to YES or NO 

爲了確定其值。

+0

一樣,這是最接近本地做的方式,但我討厭這樣做。如果一個開發者忘記該屬性是一個'NSNumber *'並且認爲它是一個'BOOL',那麼它會導致難以發現的錯誤,在這種情況下,它們會測試if(yesNoOrNil)',並且它會給出不正確的結果而不帶任何警告。 – 2013-09-20 13:53:47

1

我想你會需要使用一些類是,例如將bool包裝爲NSNumber對象。

+0

+1你肯定不會需要* *使用一個類,但它是最好的方式。 – walkytalky 2010-08-11 08:40:05

+0

所以,就像...你怎麼做到的? – 2013-07-06 22:01:11

+0

@alexgray,就像在接受的答案 – Vladimir 2013-07-06 22:06:40

相關問題