我的应用程序中只有一个数据库模型模式,所以恕我直言,NSManagedObjectModel和NSPersistentStoreCoordinator对象可能驻留在主应用程序委托类中,以便从应用程序的其他部分访问。但是,我想为我的应用程序的各个部分使用不同的NSManagedObjectContexts对象,因为我将使用多线程。如何有不同的NSManagedObjectContexts?
从我个人的数据库经验来看,我认为NSManagedObjectContext在某种程度上与数据库事务的概念相似。因此,为了避免将不需要的更改从一个应用程序部分提交到另一个应用程序部分,我的应用程序的各个多线程部分具有单独的上下文对象是合乎逻辑的。当创建新的项目与核心数据启用,Xcode创建主应用程序委托三种基本方法
- (NSManagedObjectModel *)managedObjectModel{
// reads your database model file and defined entities from defined DataSchema.xcdatamodeld file
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator{
// uses already read database model and initializes defined sqlite database file and returns a persistent store coordinator - a pointer to the database
}
- (NSManagedObjectContext *)managedObjectContext{
// opens a connection (and transaction) to the database.
}
所以,问题是,这是否合理留在主应用程序委托persistentStoreCoordinator和managedObjectModel方法(和访问它们通过应用程序),但将managedObjectContext方法移动到那些需要私人数据处理的类?
谢谢。你能否解释一下“背景情境是父母情境下的孩子”?这种背景下的亲子关系是什么? AFAIK可以创建上下文作为事务:插入记录,更新或删除它们,然后保存上下文。该事务中的所有更改都已提交,因此修改的数据可从另一个上下文中看到。我为什么要在上下文之间建立父子关系,还是我想念一些东西? – Centurion 2012-03-29 18:21:26
你什么时候开始使用Core Data? iOS 5?如果你只知道iOS 5中的Core Data,那么你已经有了父子关系。在iOS 5之前,在后台环境中执行操作有点复杂:http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/coredata/Articles/cdConcurrency.html#//apple_ref/ DOC/UID/TP40003385-SW1 – bandejapaisa 2012-03-29 18:30:45