我对Realm中只读属性的处理方法是否正确?

时间:2016-12-12 10:23:45

标签: objective-c realm access-modifiers

使用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属性的目的?

1 个答案:

答案 0 :(得分:2)

您可以使用"Class extension"。在头文件中,将属性声明为readonly。在实现文件中,您可以覆盖属性声明,如下所示。

TestObject.h

@interface TestObject : RLMObject

@property NSString *name;
@property (readonly) BOOL state;

@end

TestObject.m

@interface TestObject ()

@property (readwrite) BOOL state;

@end

@implementation TestObject

@end