Core data 使用pList更新核心数据

Core data 使用pList更新核心数据,core-data,plist,Core Data,Plist,我们可以在这里使用一些指导。我每天都以XML格式更新15000多条记录的数据库。这是我使用核心数据的应用程序的源数据。XML转储的内容每天以以下方式更改: 1) 一些记录将被删除。 2) 将添加新记录。 3) 现有记录可能会被修改 使用此XML文件的每日更改更新核心数据的最佳方法是什么?我的想法是,我必须迭代pList,并以某种方式将其与核心数据中已有的内容进行比较。不知道怎么做 我在网站上搜索了一下,找到了这篇文章,但不确定这是否是我需要做的: 先谢谢你。 Darin您没有具体说明,但我猜您的

我们可以在这里使用一些指导。我每天都以XML格式更新15000多条记录的数据库。这是我使用核心数据的应用程序的源数据。XML转储的内容每天以以下方式更改: 1) 一些记录将被删除。 2) 将添加新记录。 3) 现有记录可能会被修改

使用此XML文件的每日更改更新核心数据的最佳方法是什么?我的想法是,我必须迭代pList,并以某种方式将其与核心数据中已有的内容进行比较。不知道怎么做

我在网站上搜索了一下,找到了这篇文章,但不确定这是否是我需要做的:

先谢谢你。
Darin

您没有具体说明,但我猜您的数据库总大小是15000多条记录,并且您的XML更新包含所有记录的值。这里有一些想法要考虑。

XML记录是否包含上次修改的日期?如果没有,你能补充一下吗?然后记下上次更新核心数据版本的时间,并忽略所有早于此的XML记录

对于已删除的记录,您必须在核心数据中找到它们,然后将其删除。如果将提取请求的结果类型设置为
nsmanagedobjectdresulttype
,您可能会看到更好的性能。无需完全实现NSPersistentObjects即可删除它们

如果您一直使用未注明日期的XML,请尝试添加一个仅用于更改检测的实体。存储相关记录的6位pin码和整个原始XML字符串的
-hash
。更新后,获取pin/哈希对并进行比较。如果散列值相同,则数据不太可能已更改


这将变成一个优化问题。最好的方法取决于数据的特征:属性的数量、记录的大小、每天更新的增量大小。构造提取请求谓词以最小化执行的提取请求数量(例如,通过使用“IN”运算符传递多个6位pin码)。如果只需要一个属性,请考虑使用<代码> NSDictionaryResultType <代码>。首先进行测量,然后进行优化。

记录是否易于比较(与UID或类似产品比较)?每个记录都有一个唯一的6位pin码。您的总数据库有多大?它的哪一部分每天都在变化?XML格式在您的控制之下吗?您是否有一台在您控制下的服务器可以处理数据?XML到核心数据的转换是在iOS设备上还是在Mac上完成的?您真的需要更新现有的存储吗?还是可以用新数据完全替换它?哈尔。谢谢你!为了给您提供更多的信息,为了方便起见,我无法访问XML文件来添加其他字段。该文件是人力资源系统的转储文件,其中包含员工联系信息(姓名、地址、位置等)。每天都会有添加和删除,但对现有记录的更改可能不会太多。我喜欢你关于-哈希的想法。虽然我以前从未编写过这样的代码,也不知道如何去做,但我理解其中的逻辑,并且可以看到它是如何工作的。