2016-12-07 59 views
1

我正在使用Realm進行持久化,而且我無法訪問標記爲只讀的屬性。爲什麼我的財產不在Realm對象中?

更準確地說,我可以使用點符號打印它們,但po object只顯示讀寫屬性,並嘗試使用objectsWhere崩潰來訪問只讀屬性。

我測試過使用標準NSObject類,問題消失(顯然po),這讓我想知道爲什麼/如果Realm忽略只讀屬性?

回答

2

這是正確的!如果屬性標記爲readonly,則Realm會忽略它,並且不會在數據庫文件中爲其創建後備。這與在RLMObjectignoredProperties方法中放置方法的隱含行爲相同。它們保留爲傳統的Objective-C屬性。 :)

如果您需要使該屬性在po object命令中可見,則可以覆蓋對象的- (NSString *)description方法,並確保您的對象包含在打印的說明字符串中。

由於readonly屬性沒有得到Realm的支持,所以在使用objectsWhere時可以做的事情會非常有限,因爲它使用自定義的Realm查詢引擎。您可能可能檢查其他Realm屬性是否與該屬性匹配,但無法使用該屬性本身作爲要搜索的項目創建查詢。