可以在这里使用一点指导。我每天都会以XML格式更新15,000多个记录数据库。这是我使用Core Data的应用程序的源数据。 XML转储的内容每天都会以下列方式更改: 1)一些记录将被删除。 2)将添加新记录。 3)可以修改现有记录。
使用此XML文件的每日更改来更新Core Data的最佳方法是什么?我的想法是,我将不得不迭代pList并以某种方式将其与Core Data中已有的内容进行比较。不知道怎么做。
我在网站上搜索并找到了这篇文章,但不确定这是否是我需要做的:Initialize Core Data With Default Data
提前谢谢你。 达林
答案 0 :(得分:0)
您没有具体说明,但我猜您的总数据库大小为15,000多条记录,并且您的XML更新包含所有这些记录的值。以下是一些需要考虑的想法。
XML记录是否包含上次修改的日期?如果没有,你能加上吗?然后记下最后一次更新Core Data版本,并忽略所有早于此的XML记录。
对于已删除的记录,您必须在Core Data中找到它们,然后将其删除。如果将获取请求的结果类型设置为NSManagedObjectIDResultType
,您可能会看到更好的性能。 NSPersistentObjects不需要完全实现就可以删除它们。
如果你坚持使用未注明日期的XML,请尝试添加一个仅用于更改检测的实体。存储6位数的密码,以及相关记录的整个原始XML字符串的-hash
。更新后,获取引脚/哈希对并进行比较。如果哈希值相同,则数据不太可能发生变化。
这将变成优化问题。继续进行的最佳方式取决于数据的特征:属性数,记录大小,每日更新中的增量大小。构造您的获取请求谓词以最小化您执行的获取请求的数量(例如,通过使用“IN”运算符传递多个6位数的引脚号)。如果您只需要一个属性,请考虑使用NSDictionaryResultType
。首先测量,优化第二。