【发布时间】:2012-04-13 02:40:05
【问题描述】:
我的应用程序中只有一个数据库模型架构,因此恕我直言,NSManagedObjectModel 和 NSPersistentStoreCoordinator 对象可能驻留在主应用程序委托类中,以便从应用程序的其他部分进行访问。但是,我想为我的应用程序的各个部分使用不同的 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 方法移动到那些需要私有数据处理的类?
【问题讨论】:
标签: objective-c ios core-data