获取 NSManagedObjectContext

Posted

技术标签:

【中文标题】获取 NSManagedObjectContext【英文标题】:Obtaining the NSManagedObjectContext 【发布时间】:2011-07-05 14:29:04 【问题描述】:

嗯,我正在阅读 Apple 网站上的 ios 核心数据教程,但我不太明白。

我如何实际获取NSManagedObjectContext 以便我可以使用它来访问我的数据库?

【问题讨论】:

【参考方案1】:

如果您需要创建一个新的上下文,只需使用 alloc/init 然后添加一个持久存储协调器。这在Creating a New Managed Object Context 中有描述。如果您已经在应用程序委托或根视图控制器中创建了一个上下文,那么您只需在创建控制器时将其传递给您的视图控制器。例如,应用程序委托通常会创建根视图控制器。应用委托可以创建托管对象上下文,然后在控制器中设置上下文。

【讨论】:

好的,我会尝试在应用委托中创建它并创建一个返回它的方法。 似乎无法弄清楚我如何首先获得商店协调员。 抱歉 -- 链接有点关闭。现在修好了。要创建持久存储协调器,请再次使用+alloc,然后调用-initWithManagedObjectModel:。你如何获得模型?有几种方法,但+mergedModelFromBundles: 是您入门的好选择。提示:如果您创建一个新项目并选中 Xcode 中的“使用核心数据”框,您会发现一些很好的入门代码可以在应用程序委托中设置所有这些内容。 这是正确的吗? managedObjectModel_ = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:[NSBundle mainBundle]]]; persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel_]; managedObjectContext_ = [[NSManagedObjectContext alloc] init]; [managedObjectContext_ setPersistentStoreCoordinator:persistentStoreCoordinator_]; 查看使用 Core Data 的 Xcode 模板项目中的应用委托。这将为基于 Core Data 的简单应用程序提供所需的所有样板。

以上是关于获取 NSManagedObjectContext的主要内容,如果未能解决你的问题,请参考以下文章

从另一个 NSManagedObjectContext 获取 NSManagedObject(引用相同的 NSPersistentStoreCoordinator)

如何从扩展 iOS 8 获取 NSManagedObjectContext 实例

为啥 NSManagedObjectContext = nil 在第一次尝试获取它之后?

直接使用 NSFetchedResultsController vs NSManagedObjectContext 获取

如何修复“NSObjectInaccessibleException”获取请求在被 NSManagedObjectContext 使用之前无法响应 -entity

将应用程序推送到后台时,NSManagedObjectContext 不会获取或保存对象