什么是获得可空的布尔的Objective-C方式?

时间:2010-08-11 08:23:34

标签: objective-c types logic boolean

我应该如何获得一个bool值,我可以在Objective-C中指定true,false和nil? Objective-C的做法是什么?很像C#的Nullable。

我希望能够使用nil值来表示undefined。

2 个答案:

答案 0 :(得分:30)

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");
}

在10.3之后的所有Mac OS X平台和所有iPhone OS平台上,-[NSNumber boolValue]方法保证返回YES或NO。

答案 1 :(得分:1)

我认为你需要使用一些类,例如将bool换行到NSNumber对象。