wal*_*ace 3 boolean objective-c getter-setter ios
我需要一个数据结构上的BOOL属性,表示数据库中某个对象的状态,我想懒惰地设置该属性 - 也就是说,我不想在需要之前ping数据库,并且只设置那个时候的财产(也就是我第一次得到它).
对于像NSString这样的东西,我会像吸气鬼一样
- (NSString *)myString {
if (!_myString) {
// ask db for value
_myString = [value returned from db]
}
return _myString;
}
Run Code Online (Sandbox Code Playgroud)
但似乎BOOL在Objective-C中默认为NO - 这意味着我永远不会知道该值是否实际上是NO,或者我还没有得到它.我已经开玩笑了,但我似乎无法弄清楚如何为这样的属性创造我想到的那种吸气剂.有什么建议?或者我错过了一些非常明显的东西?提前致谢.
您可以在对象内部使用NSNumber:
// .h
@interface Object : NSObject
@property (nonatomic, assign) BOOL myBool;
@end
//.m
@interface Object ()
@property (nonatomic, strong) NSNumber *myBoolFromDB;
@end
@implementation Object
- (BOOL) myBool {
if (_myBoolFromDB == nil) {
...
}
return [_myBoolFromDB boolValue];
}
@end
Run Code Online (Sandbox Code Playgroud)