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