我应该如何在Objective-C中获取一个布尔值,以便可以将true、false和nil分配给它?在Objective-C中这样做的方式是什么?类似于C#的Nullable。
我希望能够使用nil值来表示未定义。
我应该如何在Objective-C中获取一个布尔值,以便可以将true、false和nil分配给它?在Objective-C中这样做的方式是什么?类似于C#的Nullable。
我希望能够使用nil值来表示未定义。
一个NSNumber
实例可能会有帮助。例如:
NSNumber *yesNoOrNil;
yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES
yesNoOrNil = [NSNumber numberWithBool:NO]; // set to NO
yesNoOrNil = nil; // not set to YES or NO
为了确定它的值:
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 10.3 及之后的所有平台以及所有 iPhone OS 平台上,-[NSNumber boolValue]
方法保证返回 YES 或 NO。
我认为你需要使用一些类来实现这个功能,例如将布尔值封装到NSNumber
对象中。
NSNumber*
并假设它是BOOL
,那么就会导致难以发现的错误,此时他们测试if (yesNoOrNil)
会给出不正确的结果而没有任何警告。 - Carlos P