【发布时间】:2016-12-07 13:32:39
【问题描述】:
我正在使用 Realm 进行持久化,我无法访问标记为只读的属性。
更准确地说,我可以使用点表示法打印它们,但po object 仅显示读写属性,并且尝试使用objectsWhere 访问只读属性会崩溃。
我已经使用标准 NSObject 类进行了测试,问题消失了(显然是po),这让我想知道为什么/如果 Realm 忽略只读属性?
【问题讨论】:
标签: ios objective-c realm
我正在使用 Realm 进行持久化,我无法访问标记为只读的属性。
更准确地说,我可以使用点表示法打印它们,但po object 仅显示读写属性,并且尝试使用objectsWhere 访问只读属性会崩溃。
我已经使用标准 NSObject 类进行了测试,问题消失了(显然是po),这让我想知道为什么/如果 Realm 忽略只读属性?
【问题讨论】:
标签: ios objective-c realm
没错!如果一个属性被标记为readonly,Realm 会忽略它并且不会在数据库文件中为它创建支持。这与将方法放在RLMObject 的ignoredProperties 方法中的隐式行为相同。它们被保留为传统的 Objective-C 属性。 :)
如果您需要使属性在po object 命令中可见,您可以覆盖对象的- (NSString *)description 方法,并确保您的对象包含在打印的描述字符串中。
由于readonly 属性不受 Realm 支持,因此您可以使用 objectsWhere 执行的操作非常有限,因为它使用自定义 Realm 查询引擎。您可能可以检查其他 Realm 属性是否与该属性匹配,但您无法使用该属性本身作为要搜索的项目来创建查询。
【讨论】: