唷,抱歉标题太长了。
我有一个托管对象上下文,其中存储来自两个不同位置的歌曲。我从手机上的持久存储中获取一些歌曲(使用 Core Data),并从在线数据库中提取一些歌曲。这两首歌曲都属于同一 ManagedObject 子类。我希望这两首歌都在一个上下文中,因为我希望它们都显示在与 NSFetchedResultsController 连接的表视图上。
当我想保存其中一首歌曲时,就会出现问题。我不想将从在线数据库中提取的所有歌曲保存到手机中。我只想保存单首歌曲,所以简单的 [moc save] 不起作用。另一个问题是,在我保存单首歌曲后,我仍然希望从网上提取的歌曲位于上下文中(但同样,不保存)。我相信我有几个不同的选择:
1)是否可以将 NSFetchedResults 控制器连接到多个上下文?
2)我可以将从在线数据库中提取的所有歌曲移至单独的临时上下文中,保存在原始上下文中,然后将所有歌曲移回。 (看:如何将 NSManagedObject 从一个上下文复制或移动到另一个上下文? https://stackoverflow.com/questions/2998613/how-do-i-copy-or-move-an-nsmanagedobject-from-one-context-to-another)
3)记住所有在线歌曲的键值对,从上下文中删除在线歌曲,保存原始上下文,根据保存的键值对将所有在线歌曲插入到原始上下文中。
4)我是个大菜鸟,缺少一些更简单的东西。
Thanks!
我认为最简单的事情就是再做一次NSPersistentStore
附加到您的持久存储协调员。您可以将该存储作为内存存储,并将所有“在线”结果存储在该(临时)存储中。您可以指定新插入的对象应保存在哪个存储中assignObject:toPersistentStore:
。完成此操作后,您可以自由保存,因为“保存”只会发生在您的在线歌曲的内存中。
然后,当您想要将歌曲从在线集移动到永久集时,只需删除它并重新插入它,使用相同的方法将新对象分配到永久持久存储中。
这将让您使用一个NSManagedObjectContext
附加到你的NSPersistentStoreCoordinator
,它将看到来自两个的对象NSPersistentStore
s.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)