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

时间:2010-07-06 11:48:53

标签: iphone objective-c cocoa core-data ios

尝试将RSS Feed导入Core Data。导入后,尝试再次更新Feed时,如何最有效地防止重复。现在,它在解析期间针对数据存储区检查每个项目,这不是非常有效。

我查看了Apple的热门歌曲样本。它使用最近最少使用的缓存来进行分类。但是当每个项目都不同时,缓存根本没有帮助。

编辑: 为了澄清,我已经可以使用guid在feed中唯一地标识每个项目。问题是每次将数百个项目与数据库进行比较时的性能,当大多数项目都是重复项时。

2 个答案:

答案 0 :(得分:12)

导入新行时,可以对现有行运行查询,以查看它是否已就位。为此,您需要针对您的实体创建NSFetchRequest,设置谓词以查找guid属性并将返回的最大行设置为1.

我建议您在导入期间保留此NSFetchRequest,以便在进行导入时可以重复使用它。如果NSFetchRequest返回一行,您可以更新该行。如果它没有返回一行,那么你可以插入一个新行。

如果操作正确,您会发现性能超出了可接受范围。

答案 1 :(得分:1)

您可以修改核心数据模型吗?

如果可以,我可以在每个Feed条目中添加“Hash”属性以唯一标识它。然后,您可以有效地检测数据库中是否存在特定条目。