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

Alo*_*mir 23 iphone null objective-c

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

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

Dav*_*ong 40

你不能.A BOOLYES或者NO.没有其他州.解决这个问题的方法是使用a NSNumber([NSNumber numberWithBool:YES];),然后检查NSNumber它本身是否存在nil.或者有一秒钟BOOL表明你是否改变了第一个的价值.

  • 实际上,`BOOL`可能不是'YES`或'NO`.使用`BOOL`的唯一安全方法是检查它是"NO"还是"!NO".`BOOL`是`signed char`的`typedef`. (4认同)
  • @dreamlax是的,你可以将BOOL设置为1或2,但对我来说这似乎是对typedef目的的歪曲. (3认同)

Tec*_*Zen 5

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

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