在 Core Data 中检查重复值的快速方法
Posted
技术标签:
【中文标题】在 Core Data 中检查重复值的快速方法【英文标题】:quick way to check for duplicate values in Core Data 【发布时间】:2011-11-11 13:42:18 【问题描述】:我需要快速检查一下我在 CoreData 中是否有一些重复的值。我正在做一些后台同步,偶尔会有一个骗子进入我的系统。
我有一个 ManufacturerID 和一个 ItemID,我不能有两个重复值,例如错误数据:
ManufacturerID ItemID
35 IT001
35 IT001
所以我只想知道是否发生了这种情况,并且可能会获取这些 ItemID 的列表,然后我需要一种方法来弄清楚如何摆脱欺骗,但这是一个好的开始。
我只需要一个快速的方法来确定它们是否存在。
【问题讨论】:
【参考方案1】:在我的应用程序中,我有一个 SynchManager,它使用 NSoperations 在后台执行同步,并且只有在未存储时才将新记录存储在持久性 sqlite 存储中。 基本上我做的是:
-
执行获取存储的 id 集合的 fetch 请求(在我的例子中,这些 id 是代表 url 的字符串)
在商店中插入一个新对象之前,我调用了一个类似“shouldImportObject:”的方法,它基本上测试了 url 是否还没有存储在数据库中。这是一个简化的实现示例:
for (id objectID in ids)
if ([objectID isEqual:objectToImport.objectID])
return NO;
return YES;
【讨论】:
问题是我可能有 50,000 多条记录要处理。从理论上讲,我第一次获取数据时不会检查重复项(这是我的问题),从那时起,我会执行 fetch 请求以查看该项目是否存在,但这在初始导入数据时会很慢,似乎有点疯狂,会导致大量的磁盘 io。 我想你只是为我打开了一盏灯! DOH - 我可以检查它是否为空 - LOL @我自己以上是关于在 Core Data 中检查重复值的快速方法的主要内容,如果未能解决你的问题,请参考以下文章
检查一个 data.table 列中的所有元素以查看另一个 data.table 列中出现的每个值的最快方法