gpt4 book ai didi

swift - 使用 objectWithID 获取所有值为 null 的托管对象

转载 作者:行者123 更新时间:2023-11-28 08:33:44 25 4
gpt4 key购买 nike

我正在处理核心数据。我想在我的应用程序的几个事件上更新托管对象。该托管对象在应用程序启动时创建或获取(如果存在)。我知道托管对象不是线程安全的,所以我没有将托管对象存储在内存中,而是存储 objectID 因为它是线程安全的。一旦对象被创建并保存到上下文中,我就会存储 objectID,因此我确信存储的 objectID 是永久的而不是临时的。

在我想要更新我的对象的事件上,我有以下代码:

self.managedObjectContext.performBlock {
let myObject = self.managedObjectContext.objectWithID(objectId) as! MyClass
myObject.property = myValue
self.managedObjectContext.save()
}

这在大多数情况下工作正常,但在某些情况下,我使用 self.managedObjectContext.objectWithID(objectId) 获取对象,但它的所有属性都是 nil,这不应该发生,因为对象已经创建并保存在上下文中。

有人能告诉我获取属性值为 nil 的对象的原因吗?

我知道的唯一原因是在使用临时对象 ID 调用 objectWithID 方法时,但在我的情况下情况并非如此,因为我只使用永久对象 ID。

最佳答案

如果您为所有值返回 nil,这意味着该对象在您最近的访问之前已被删除。

观看 WWDC 2015 的核心数据视频。引入此行为是为了避免在您保留对已删除的 NSManagedObject 的引用时出现问题。

关于swift - 使用 objectWithID 获取所有值为 null 的托管对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38321998/

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