我正在使用Realm進行持久化,而且我無法訪問標記爲只讀的屬性。爲什麼我的財產不在Realm對象中?
更準確地說,我可以使用點符號打印它們,但po object
只顯示讀寫屬性,並嘗試使用objectsWhere
崩潰來訪問只讀屬性。
我測試過使用標準NSObject類,問題消失(顯然po
),這讓我想知道爲什麼/如果Realm忽略只讀屬性?
我正在使用Realm進行持久化,而且我無法訪問標記爲只讀的屬性。爲什麼我的財產不在Realm對象中?
更準確地說,我可以使用點符號打印它們,但po object
只顯示讀寫屬性,並嘗試使用objectsWhere
崩潰來訪問只讀屬性。
我測試過使用標準NSObject類,問題消失(顯然po
),這讓我想知道爲什麼/如果Realm忽略只讀屬性?
這是正確的!如果屬性標記爲readonly
,則Realm會忽略它,並且不會在數據庫文件中爲其創建後備。這與在RLMObject
的ignoredProperties
方法中放置方法的隱含行爲相同。它們保留爲傳統的Objective-C屬性。 :)
如果您需要使該屬性在po object
命令中可見,則可以覆蓋對象的- (NSString *)description
方法,並確保您的對象包含在打印的說明字符串中。
由於readonly
屬性沒有得到Realm的支持,所以在使用objectsWhere
時可以做的事情會非常有限,因爲它使用自定義的Realm查詢引擎。您可能可能檢查其他Realm屬性是否與該屬性匹配,但無法使用該屬性本身作爲要搜索的項目創建查詢。