检查BOOL是否已设置(无法使用== nil)

时间:2010-01-05 19:58:37

标签: iphone objective-c null

如何检查是否在objective-c(iphone)中设置了BOOL?

我知道可以用int或float这样做: NSNumber * Num = [prefs floatForKey:@“key”]; 例如

4 个答案:

答案 0 :(得分:40)

你做不到。 BOOLYESNO。没有其他州。解决这个问题的方法是使用NSNumber[NSNumber numberWithBool:YES];),然后检查NSNumber本身是否为nil。或者有第二个BOOL来表明你是否改变了第一个的值。

答案 1 :(得分:5)

令人讨厌的是,Objective-C没有布尔类。它当然应该感觉应该和很多人一起旅行。在集合和核心数据中,所有bool都存储为NSNumber实例。

不得不一直来回转换真烦人。

答案 2 :(得分:2)

默认情况下,在Objective-C中将bool值设置为0,因此您无需随时检查bool值是否为nil。

答案 3 :(得分:0)

您可以改用类似的方法...

@import Foundation;

@interface CSBool : NSObject

+ (CSBool *)construct:(BOOL)value;

@property BOOL value;

@end

#import "CSBool.h"

@implementation CSBool

+ (CSBool *)construct:(BOOL)value {
    CSBool *this = [self new];
    this.value = value;
    return this;
}
@end