使用Realm,我发现readonly属性(根据文档和我的earlier question)不会被保留,我认为这是出于优化原因。
由于我想要持久化readonly属性(在特定情况下,从对象的创建日期派生的过时值),我决定使用空的setter。
接口文件
@property ( nonatomic, getter=isStale, setter=isReadonlyProperty:) bool stale;
实施档案
- (bool) isStale {
return [self secretComputationMethod];
}
- (void) isReadonlyProperty:(bool)stale {
// ignore argument
NSLog(@"Property is readonly");
}
这是一种可接受的方法吗?有没有更好的办法?我是否误解了Realm不依赖于readonly属性的目的?
答案 0 :(得分:2)
您可以使用"Class extension"。在头文件中,将属性声明为readonly
。在实现文件中,您可以覆盖属性声明,如下所示。
@interface TestObject : RLMObject
@property NSString *name;
@property (readonly) BOOL state;
@end
@interface TestObject ()
@property (readwrite) BOOL state;
@end
@implementation TestObject
@end