我的应用程序使用多个线程,每个线程具有一个托管对象上下文。
为了清楚起见,我将不同的托管对象上下文称为:moc1、moc2、...等。
假设我们有两个具有简单一对多关系的模型:
User 1----* Document
当用户登录时,我从其中一个上下文(例如 moc1)中获取相应的模型。
(伪代码)
UserModel *globalLoggedUser = ( Fetch the logged in user using moc1 )
然后我存储这个用户,以便我以后可以引用它。
在应用程序的另一部分,我需要遍历数组中的数千个项目并为其创建 Document 对象。然后每个文档都需要绑定到当前用户。这发生在不同的后台线程(有自己的上下文)
for( NSString *documentName in documents) {
( Create new document using moc2 )
** THIS IS WHERE MY PROBLEM IS **
// What I currently do:
UserModel *tempUser = ( Fetch the logged in user using moc2 )
( bind new document to tempUser )
// What I would like to do:
( bind new document to globalLoggedUser )
// Note that in this case tempUser and globalLoggedUser are the same user, except they are attached to different contexts.
}
如您所见,我希望避免每次都将新用户获取到当前上下文中。
问题是,globalLoggedUser 是 moc1 的一部分,而新文档是 moc2 的一部分(或 moc3、moc4 等,取决于线程)。
那么解决这个问题的最佳方法是什么?如何全局保存/缓存一个对象,然后使用同一个对象在不同的上下文中绑定关系,而不会产生每次都必须获取的惩罚?
感谢您的任何帮助,您可以提供。