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)请解释如何做到这一点,如果我可以解决问题? –