[英]Prevent duplicates when importing RSS feed to Core Data
尝试将RSS源导入Core Data。 导入后,尝试再次更新Feed时,如何最有效地防止重复。 现在它在解析期间针对数据存储区检查每个项目,这不是非常有效。
我查看了Apple的热门歌曲样本。 它使用最近最少使用的缓存来进行分类。 但是当每个项目都不同时,缓存根本没有帮助。
编辑:为了澄清,我已经可以使用guid在feed中唯一标识每个项目。 问题是每次将数百个项目与数据库进行比较时的性能,当时大多数项目都是重复项目。
导入新行时,可以对现有行运行查询,以查看它是否已存在。 为此,您NSFetchRequest
针对您的实体创建NSFetchRequest
,将谓词设置为查找guid属性并将返回的最大行设置为1。
我建议您在导入期间保留此NSFetchRequest
,以便NSFetchRequest
导入时可以重复使用它。 如果NSFetchRequest
返回一行,您可以更新该行。 如果它没有返回一行,那么您可以插入一个新行。
如果操作正确,您会发现性能超出了可接受范围。
你能修改你的核心数据模型吗?
如果可以的话,我会在每个Feed条目中添加一个“Hash”属性来唯一标识它。 然后,您可以有效地检测数据库中是否已存在特定条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.