我的申请是另一个待办事项经理。它有类Todolist,可以是本地(私人列表)或共享列表。与私有列表相关的所有数据都存储在本地(Core Data + SQLite存储)。与共享列表相关的数据必须本地和远程存储(以便所有共享列表成员都能够将其事务添加到列表中)。通过PFIncrementalStore
使用Parse Cloud支持远程持久性存储。所以我的目标是将本地存储的共享列表与远程存储的待办事项同步。
这是引用Core Data Programming Guide:
协调器只能与一个托管对象模型关联。如果 你想要将不同的实体放入不同的商店 通过定义模型中的配置来划分模型实体 托管对象模型
这是否意味着我应该为shared-list和它的待办事项创建单独的datamodel配置?或者只是使用NSManagedObjectContext- (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store
的方法重新分配对象就足够了?
我如何看待解决方案:当我处理共享列表时,我将其分配给PFIncrementalStore
,另一方面(处理私有列表)我将其分配给标准本地存储(NSSQLiteStoreType)。
我说得对吗?任何建议表示赞赏。谢谢。
答案 0 :(得分:2)
除非您的本地和远程待办事项是不同的实体类型,或者您有其他实体只应存在于其中一个持久性存储文件中,否则配置在此处没有用。当该引用引用“不同实体”时,它们表示不同的实体类型,而不是同一实体类型的不同实例。
此外,您无法使用assignObject:toPersistentStore:
将对象从一个持久性存储移动到另一个持久性存储。如果您查看该方法的文档,您会发现它仅适用于“新插入的对象”。这意味着如果您创建一个与任何托管对象上下文无关的新托管对象(即在创建上下文时为上下文传递nil值的托管对象),则可以告诉NSManagedObjectContext
将其插入到自身和使用特定的商店文件。至关重要的是,无法在已经属于上下文和商店的对象上使用此方法,因此您无法使用它将对象从一个商店移动到另一个商店。
要按照您的描述移动对象,您需要执行以下操作:
没有内置支持将对象从一个商店移动到另一个商店。