在 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 列中出现的每个值的最快方法

在熊猫切片上设置值的正确方法[重复]

检查字符数组是不是为零的快速方法[重复]

Vue 恢复初始值的快速方法

检查 Core Data managedObject 中的多个 nil 值?

js数组中 删除重复对象 有啥快速的方法