0
我正在追蹤在生產中發生的崩潰,其中調用indexOf
時Results
引發Object type <my object type> does not match RLMResults type <my object type>
。我在他們的github上發現了this issue,2015年的this PR已經解決了這個問題,這意味着我已經有了這個修復。有沒有人從那以後有過體驗,也許有不同的原因?`indexOf`正在投擲「對象類型與RLMResults不匹配」異常
我的情況與上面鏈接的問題發佈者的情況類似 - 傳遞給indexOf
的實例可能在此時不受領域管理。
編輯:我的代碼看起來像
extension MyObject {
func refresh() {
let realm = try! Realm()
realm.refresh()
let results = realm.objects(MyObject.self)
.filter(/* some filtering... */)
.sorted(/* some sorting... */)
if let ownIndex = results.index(of: self) {
/* do something */
}
}
}
的方法稱爲(從外地)領域中的每個對象上添加了新的對象後:在index(of:)
let realm = try! Realm()
realm.refresh()
try! realm.write {
// iterate over some data to populate new realm objects from
for objectData in data {
let object = MyObject()
object.populateFields(from: objectData) // Just sets some fields on the object
realm.add(object, update: true)
}
for object in realm.objects(MyObject.self).filter(/* Some filter... */) {
object.refresh()
}
}
的墜機事件發生。
請張貼一些代碼來顯示您在什麼情況下收到此錯誤。 –
每次添加新對象時,必須更新Realm中對象的__all__似乎是一個不好的解決方案。你確定你不能用內置的鏈接對象來實現相同的功能嗎?使用那些你會擺脫你的功能導致這個問題。 –
(1)我不能,真的。我的具體情況是'refresh'更新持久聊天消息中名爲'isFirstOfDay'和'isLastInGroup'的屬性。這發生在添加或刪除消息時,這可能會使任何現有對象上的這些屬性無效。他們沒有互相鏈接,所以不要認爲這個鏈接適用。過濾器(我在我的例子中留空)非常積極,以確保不會發生不必要的更新。 (2)請解釋如何做到這一點,如果我可以解決問題? –