我正在将数据从iTunes写入Core Data。

现在,第一次同步大约需要10秒钟,
但是,更新数据大约需要30秒。
我的计算机具有SSD,因此在HDD上最有可能变得更慢。

我正在做的是,我要获取一堆歌曲,并且必须对每首歌曲进行抓取,以检查它是否已经存在于Core Data中;如果没有,则必须插入它。

知道歌曲是否已经存在的唯一方法是检查persistentID
它基本上是用于标识的持久唯一ID。

我可以通过检查查看歌曲是否已经添加

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


这不是一个很聪明的主意。

您可以给我什么建议以加快速度?

最佳答案

首先,获取您要比较的所有歌曲的ID。然后,您只需一次访问持久性存储即可获取新歌曲。

获取ID,

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


然后使用这样的谓词进行提取。

[NSPredicate predicateWithFormat:@"persistentID NOT IN %@", allIDs];

08-26 12:22