2011-11-11 13 views
1

CoreDataに重複する値があるかどうかを素早く確認する必要があります。私はいくつかのバックグラウンド同期をしています、そして時には欺瞞が私のシステムにそれを作ります。コアデータの重複値を迅速にチェックする方法

私はManufacturerIDとアイテムIDを持っていると私は両方のために重複する値を持つことができない、悪いデータの例:

ManufacturerID ItemID 
35    IT001 
35    IT001 

だから私はちょうどそれが起こったかどうかを知りたいでしょうし、おそらくそれらのリストを取得ItemIDの、私はどのように愚か者を取り除く方法を把握する方法が必要ですが、これは良いスタートです。

もし存在するかどうかを知るには、高速な方法が必要です。

答えて

0

私のアプリケーションでは、NSoperationsを使用してバックグラウンドで同期を実行し、永続的なsqliteストアに新しいレコードを格納するのは、alredyが格納されていない場合のみです。 は基本的に私は何をすべきかです:私は呼んストアに新しいオブジェクトを挿入する前に

  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 @ myself – Slee

関連する問題