【发布时间】:2012-02-16 21:45:05
【问题描述】:
我正在与 MySQL 数据库同步。
最初,我打算遍历所有新的/修改的对象并为该对象设置所有外键,然后执行下一个对象,依此类推……但这是很多获取请求。
因此,我想循环遍历所有新的/修改的对象,并一次设置一个外键。所以第一次遍历我的对象设置 fk1,我的下一次设置 fk2,依此类推......
酷,获取请求大大减少。现在我很好奇我是否可以线程化这些 fk 设置器。它们不相互依赖,但它们正在修改同一个对象,即使它们只是设置一种关系,而且是不同的关系。用 git 术语来说,这些更改可以“合并”在一起而没有任何冲突,但是是否可以将一个子 managedObjectContext(childContext:save) 中的更改推送到 parentManagedObjectContext(parent:performBlock^{parent:save}) 并拉它在另一个不同的子 managedObjectContext(???) 中?或者合并策略是否只采用一个 childContext 的对象版本,而让其他 fks 有效地保持不变。
我知道这存在:NSManagedObjectContext/refreshObject:mergeChanges:
但这是逐个对象级别的。这会导致一堆提取吗?还是会一次/分批更新我的整个上下文?
从这里遵循 Apple 的建议: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdImporting.html 在开始设置任何关系之前,我已经创建/更新了我的值,因此在我尝试将任何关系指向它们之前,所有实体都已经存在。
顺便说一句:我们有几个应用程序可以从并发中受益,因为它们会抛出大量数据,而对于四核 iPad 应用程序,这确实有助于缩短初始同步所需的时间。
【问题讨论】:
标签: ios core-data nsmanagedobjectcontext