gpt4 book ai didi

ios - Realm 无效错误,即使 invalidated == false

转载 作者:行者123 更新时间:2023-11-30 13:06:11 26 4
gpt4 key购买 nike

我知道 Realm 很容易因无效的对象而崩溃...但是,我尝试在使用给定对象之前捕获这种状态,并且它通常可以工作。但是,对于我的 Request 对象,有时我会在realm.add(self) 上发生崩溃,并显示“不允许将已删除或无效的对象添加到 Realm ”。

我不确定 invalidated 是否是漏报,或者我验证对象已被删除的“自定义”方式是否错误(我只是在实际删除对象之前将对象的 id 添加到共享字典中)。

我对这个有点卡住了,它导致我的应用程序崩溃:(

if self.invalidated == false{
if let deleted = RequestHelper.sharedHelper.deletedRequests[id] where deleted == true{
return
}
let realm = try! Realm()
do{
try realm.write{
realm.add(self)
}
}catch{}
id = self.id
}
else{
print("realm invalidation")
}

最佳答案

我对你在这里使用的逻辑有点困惑。您首次使用 realm.add() 将新对象添加到 Realm 实例。在此之前,检查它是否无效很可能总是返回 false,因为此时它还不应该由 Realm 支持。

如果它已经由 Realm 实例支持,那么还需要注意的是,Realm 写入事务是按顺序发生的。一次只能打开一个,之后的每个都将等待当前的一个完成。既然如此,self.invalidated 确实是 false 是可能的,但是当您在此处打开写入事务时,另一个写入事务可能刚刚将其删除。

我的建议是尝试并尽可能依赖 Realm 本身来检查对象的已删除状态,而不是依赖自定义机制。如果id已设置为主键,您可以使用realm.objectForPrimaryKey(ObjectType.self, key: id)快速检查它是否已存在于Realm 实例与否(而不是尝试自己管理单独的列表)。

如果您需要任何额外说明,请告诉我。

关于ios - Realm 无效错误,即使 invalidated == false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39334799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com