2011-11-11 69 views
1

我需要快速检查CoreData中是否有重复值。我正在做一些背景同步,偶尔还会有一些愚蠢的东西进入我的系统。快速检查核心数据中重复值的方法

我有一个ManufacturerID和项目ID,我不能有两个重复的值,例如不良数据:

ManufacturerID ItemID 
35    IT001 
35    IT001 

所以我只是想知道,如果发生,可能得到这些名单ItemID的,那么我需要一种方法来弄清楚如何摆脱困境,但这是一个好的开始。

我只是需要一个快速的方法,如果他们存在与否。

回答

0

在我的应用程序中,我有一个SynchManager,它使用NSoperation在后台执行同步,并在持久sqlite存储中存储新记录,但前提是不存储该文件。 基本上我做的是:

  1. 执行为获取请求其在店里我所说的检索存储ID的集合(在我的情况下,这些ID是代表的URL字符串)
  2. 插入之前,一个新的对象方法如“shouldImportObject:”,它基本上测试该url是否已经存储在数据库中。这是一个简单的实现示例:

    for (id objectID in ids) { 
        if ([objectID isEqual:objectToImport.objectID]) { 
        return NO; 
        } 
    } 
    
    return YES; 
    
+0

问题,那就是我有可能50,000记录经历。从理论上讲,第一次获取数据时,我不检查是否有重复项(这是我的问题),从那时起,我做了一个获取请求来查看项目是否存在,但是对于初始数据导入来说太慢了,看起来有点儿疯狂并会导致大量的磁盘io。 – Slee

+0

当然,如果数据库是空的,我不使用测试! – daveoncode

+0

我想你只是为我打开灯! DOH - 我可以检查它是否为空 - 我自己的LOL – Slee