1

iTunes から Core Data にデータを書き込んでいます。

現在、最初の同期には約 10 秒かかり
ますが、データの更新には約 30 秒かかります。
私のコンピューターには SSD が搭載されているため、HDD ではさらに遅くなる可能性があります。

私がやっていることは、曲の配列を取得していて、コア データに既にあるかどうかを確認するために各曲を取得する必要があり、そうでない場合は挿入する必要があるということです。

曲が既に存在するかどうかを知る唯一の方法は、persistentID.
これは基本的に、識別のための永続的な一意の ID です。

チェックすることで、曲が既に追加されているかどうかを確認できます

[NSPredicate predicateWithFormat:@"persistentID == %@", song.persistentID];

あまり賢明な考えではありません。

これをスピードアップするために、どのようなアドバイスをいただけますか?

4

2 に答える 2

2

まず、比較したいすべての曲の ID を取得します。その後、永続ストアに 1 回アクセスするだけで新しい曲を入手できます。

IDを取得し、

NSArray *allIDs = [existingSongs valueForKeyPath:@"persistentID"];

そして、このような述語でフェッチを行います。

[NSPredicate predicateWithFormat:@"persistentID NOT IN %@", allIDs];
于 2013-01-16T16:54:06.057 に答える
1

最初の同期は、フェッチ リクエストを行わないため、常に短くなります。

コア データの好み: バッチ リクエスト 小さなバッチ

バッチ リクエストについては、Mundi が完全に対応しています。この小さなセットは、更新する必要があるものだけになります。

次の部分では、より小さなバッチについて説明します。マルチスレッドで分解すると、更新を大幅に高速化できます。あなたが保存していて、データセットについて十分に知らないので、cimg のマルチスレッドコアデータチュートリアルをチェックしてください。

于 2013-01-16T20:49:02.207 に答える