如何避免插入重复记录?

Mar*_*ark 3 core-data objective-c ios

我有一个Web服务调用,它返回我转换为域对象的XML,然后我想将这些域对象插入到我的Core Data存储中.

但是,我真的想确保我不插入重复项(对象有一个日期戳,使它们唯一,我希望用于唯一性检查).我真的不想循环遍历每个对象,进行提取,然后插入,如果没有找到任何东西,那将是非常差的性能...

我想知道是否有更简单的方法吗?也许是我的对象在记忆中的"分组"???? 那可能吗?

Mar*_*rra 5

你的问题已经有了答案.你需要循环遍历它们,寻找它们,如果它们存在更新; 否则插入.没有其他办法.

由于您没有使用单个值,因此可以通过设置谓词来一次获取所有相关对象:

[myFetchRequest setPredicate:[NSPredicate predicateWithFormat:@"timestamp in %@", myArrayOfIncomingTimestamps]];
Run Code Online (Sandbox Code Playgroud)

这将为您提供已存在故障状态的所有对象.然后,您可以针对该数组运行内存谓词以检索现有对象以更新它们.

还有一个忠告.时间戳是非常独特的ID.我强烈建议你重新考虑一下.