我正在将数据从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];