2010-08-11 27 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

相关问题