将RSS源导入到Core Data时防止重复

尝试将RSS源导入到Core Data中。 一旦他们被导入,当试图再次更新饲料后,我如何最有效地防止重复。 现在它在parsing过程中检查数据存储的每个项目,这不是非常有效。

我看了一下Apple的Top Songs示例。 它对类别使用最近最less使用的caching。 但是,当每个项目不同时,caching根本没有帮助。

编辑:澄清,我已经可以在guid中唯一地标识每个项目。 问题是每次比较数以百计的项目与数据库的性能,其中大多数是重复的。

在导入新行时,可以对现有行运行查询以查看是否已经存在。 要做到这一点,你创build一个对你的实体的NSFetchRequest ,设置谓词来查找guid属性,并设置最大行返回到1。

我build议在导入期间保留这个NSFetchRequest ,以便在导入时可以重用它。 如果NSFetchRequest返回一行,则可以更新该行。 如果它不返回一行,那么你可以插入一个新的行。

如果正确完成,您会发现性能超过可接受的水平。

你能修改你的核心数据模型吗?

如果可以的话,我会添加一个“哈希”属性到每个供稿条目来唯一标识它。 那么你可以有效地检测一个特定的条目是否已经在你的数据库中。