【发布时间】:2010-02-02 05:07:16
【问题描述】:
我有一个具有 messageID 属性的 Message 实体。我想确保只有一个具有给定 messageID 的 Message 实体实例。在 SQL 中,我只需向 messageID 列添加一个唯一约束,但我不知道如何使用 Core Data 执行此操作。我不相信它可以在数据模型本身中完成,那你怎么做呢?
我最初的想法是使用验证方法来获取 NSManagedObject 的 ID 上下文,看看它是否找到除自身之外的任何内容,如果是,则验证失败。我怀疑这会起作用 - 但我担心这样的事情的表现。我付出了很多努力来最小化整个导入例程所需的获取请求,并且通过对每个新消息实体执行获取来验证它似乎有点过分。在执行将所有内容导入和连接在一起的实际工作之前,我可以使用两个获取查询来获取我需要的所有预先存在的对象并识别我需要插入到存储中的所有新对象。除了这两个之外,这将为每个更新或插入添加一个提取 - 这似乎消除了我首先通过预处理导入数据而获得的任何性能优势!
这是一个问题的主要原因是导入器可以(可能)在多个线程上同时运行多个批次,并且可能包含一些重叠/重复的数据,这些数据最终需要在存储中产生一个对象而不是重复条目。有没有一种合理的方法可以做到这一点,并且我所要求的对 Core Data 有意义吗?
【问题讨论】: