我应该如何获得一个布尔值,我可以在Objective-C中分配true,false和nil? Objective-C的做法是什么?很像C#的Nullable。什么是Objective-C获取可空对象的方法?
我期待能够使用零值来表示不确定。
我应该如何获得一个布尔值,我可以在Objective-C中分配true,false和nil? Objective-C的做法是什么?很像C#的Nullable。什么是Objective-C获取可空对象的方法?
我期待能够使用零值来表示不确定。
一个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
为了确定其值。
我想你会需要使用一些类是,例如将bool包装为NSNumber
对象。
+1你肯定不会需要* *使用一个类,但它是最好的方式。 – walkytalky 2010-08-11 08:40:05
所以,就像...你怎么做到的? – 2013-07-06 22:01:11
@alexgray,就像在接受的答案 – Vladimir 2013-07-06 22:06:40
一样,这是最接近本地做的方式,但我讨厌这样做。如果一个开发者忘记该属性是一个'NSNumber *'并且认为它是一个'BOOL',那么它会导致难以发现的错误,在这种情况下,它们会测试if(yesNoOrNil)',并且它会给出不正确的结果而不带任何警告。 – 2013-09-20 13:53:47