仅找到一次 ID 的核心数据对象

Posted

技术标签:

【中文标题】仅找到一次 ID 的核心数据对象【英文标题】:Core Data Object for ID Only Found Once 【发布时间】:2011-06-30 13:19:42 【问题描述】:

我有一个需要解析的巨大 xml 文件。 对于 xml 中的不同标签,例如 Football Soccer Data,我创建 NSManagedObjects,例如SoccerPlayer 等等。

我还需要在解析方法中多次使用这些对象,因此我创建了一个 Object,它可以为我提供的 id 找到正确的对象。

这适用于 xml 中的第一个游戏,但之后的任何游戏都不起作用。

可能是我在解析 xml 时必须删除一些对象的问题?

对于我的 XML 解析框架,我使用 TouchXML。

以前有没有其他人经历过这种行为?

【问题讨论】:

澄清:id 是 API 提供的托管对象 ID 还是您创建的自定义 ID? “为我找到正确对象的对象”是托管对象吗?你的数据模型是什么样的?我认为我们需要更多细节来回答这个问题。 我认为我们需要一些代码。根据您的操作方式,您的对象或字典或任何超出范围、被释放或替换的内容都有可能发生。 【参考方案1】:

我同意一些代码会有所帮助的评论 - 很难准确理解问题所在。不过,我会指出 NSManagedObject 的 -objectID 的文档说:

重要提示:如果接收者尚未保存,则对象 ID 为 临时值会在什么时候改变 对象已保存。

因此,如果您正在创建一个对象,存储它的 objectID,保存上下文,然后尝试使用您存储的 objectID 查找对象,您可能会失败,因为临时 objectID 被替换为保存上下文时永久的。

【讨论】:

以上是关于仅找到一次 ID 的核心数据对象的主要内容,如果未能解决你的问题,请参考以下文章

如果在循环中插入对象,应该多久调用一次 NSManagedObjectContext 保存?

如何在视图中仅循环一次对象(单个 *ngFor)?

一次性将多个对象输入核心数据

如何确保某个 ID 在核心数据中只出现一次?

如何一次删除多个核心数据对象?

应用程序在其主键字段的对象 ID 的核心数据中崩溃