我从 Xcode 模板创建了一个应用程序并选择了“核心数据”作为一个选项,因此所有核心数据委托(delegate)和主要方法都将包含在 AppDelegate 文件中。
现在,每次我必须获取上下文才能使用 Core Data 时,我都会使用以下代码:
MovieCatalogAppDelegate *appDelegate = (MovieCatalogAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
有没有办法在不需要直接调用 MovieCatalogAppDelegate 的情况下获取 managedObjectContext?我想让它成为一个通用调用,这样我的数据文件就不必绑定(bind)到 MovieCatalogAppDelegate.h。基本上,我试图解耦代码并使事情变得更加动态,而无需知道直接名称。
谢谢。
最佳答案
有几个不同的选项。
您可以将您的 Core Data 支持代码移动到您的应用委托(delegate)以外的类中。如果您愿意,可以将其设为单例。
您可以将托管对象上下文作为每个 View Controller 的属性传递。
如果您已经传递了一个
NSManagedObject
,您可以从上述的managedObjectContext
中获取NSManagedObjectContext
对象。
this article中有一些想法在 CIMGF 上。
关于iphone - 有没有办法让 NSManagedObjectContext 不必每次都调用我的 AppDelegate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910529/