【发布时间】:2023-03-14 11:20:01
【问题描述】:
我需要一个数据结构上的 BOOL 属性,表示数据库中某个对象的状态,并且我想懒惰地设置该属性——也就是说,我不想在需要之前 ping 数据库,并且只在那个时候设置属性(即我第一次得到它时)。
对于像 NSString 这样的东西,我会做一个像
这样的 getter- (NSString *)myString {
if (!_myString) {
// ask db for value
_myString = [value returned from db]
}
return _myString;
}
但在 Objective-C 中,BOOL 似乎默认为 NO——这意味着我永远不会知道该值是否实际上是 NO,或者我还没有得到它。我已经四处寻找,但我似乎无法弄清楚如何为这样的属性创建我想到的那种吸气剂。有什么建议?还是我错过了一些非常明显的东西?提前致谢。
【问题讨论】:
-
你可以使用一个也可以存储真/假值的 NSNumber 而不是 bool,然后你可以测试 NSNumber 是否为 nil
-
你也可以只使用一个初始化为 -1 的 int,然后你可以将它设置为 0 或 1,如果它是真或假,你可以知道它还没有被延迟加载,如果它 - 1
-
@Fonix 使用 int 是个好主意
-
使用整数很好。您也可以只使用两个布尔值,一个用于保存值,另一个用于指示第一个是否有效/已被初始化。
标签: ios objective-c boolean getter-setter