我正在将应用程序从SQLitePersistentObjects转换为CoreData。
在应用程序中,有一个类,我从我的服务器检索的XML文件生成许多*实例。用户界面可以触发需要我保存这些对象的部分 *的操作,直到下次调用该应用程序为止。
除了为每个对象提供单个NSManagedObjectContext之外(仅与其可包含blob的子服务对象共享)。我无法看到如何对持久存在的对象进行细粒度控制(即在对象级别)。如果我尝试为所有新创建的对象创建一个上下文,当我尝试将一个对象移动到一个新的上下文时,我会得到一个异常,所以我可以将它保存在自己的上面。我猜这是因为它拥有的对象留在“旧”的上下文中。
我看到的另一个选项是拥有一个上下文,保留所有对象,然后删除我以后不需要的对象 - 这感觉就像它会过多地击中数据库但是CoreData可能会有魔力。< / p>
所以:
*其中“many”表示“数十,数百,不是数千”,“某些”至少比“很多”小一个数量级
答案 0 :(得分:5)
核心数据实际上不是对象持久性框架。 是一个对象图管理框架,恰好可以将该图表保存到磁盘(有关详细信息,请参阅this以前的SO答案)。因此,尝试使用核心数据来保持对象图中对象的某些将会起作用。核心数据更倾向于管理您要创建的所有对象的整个图形。所以,选项并不完美,但我看到了几个(包括你提到的一些):
(void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store
),然后保存上下文。就个人而言,我会选择选项1 - 让Core Data做自己的事情,包括管理对象图中的删除。