iphone - 有没有办法让 NSManagedObjectContext 不必每次都调用我的 AppDelegate?

标签 iphone objective-c xcode uikit sdk

我从 Xcode 模板创建了一个应用程序并选择了“核心数据”作为一个选项,因此所有核心数据委托(delegate)和主要方法都将包含在 AppDelegate 文件中。

现在,每次我必须获取上下文才能使用 Core Data 时,我都会使用以下代码:

MovieCatalogAppDelegate *appDelegate = (MovieCatalogAppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];

有没有办法在不需要直接调用 MovieCatalogAppDelegate 的情况下获取 managedObjectContext?我想让它成为一个通用调用,这样我的数据文件就不必绑定(bind)到 MovieCatalogAppDelegate.h。基本上,我试图解耦代码并使事情变得更加动态,而无需知道直接名称。

谢谢。

最佳答案

有几个不同的选项。

  1. 您可以将您的 Core Data 支持代码移动到您的应用委托(delegate)以外的类中。如果您愿意,可以将其设为单例。

  2. 您可以将托管对象上下文作为每个 View Controller 的属性传递。

  3. 如果您已经传递了一个 NSManagedObject,您可以从上述的 managedObjectContext 中获取 NSManagedObjectContext对象。

this article中有一些想法在 CIMGF 上。

关于iphone - 有没有办法让 NSManagedObjectContext 不必每次都调用我的 AppDelegate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910529/

相关文章:

iphone - Bootstrap 模式中的图像未显示在移动设备上

objective-c - 如何检测哪个CALayer被点击?

ios - XCode:为什么我的核心数据更改只有在重新启动模拟器后才会出现?

iphone - 该目标可能包括其自己的产品

c++ - 如何在openCV中规范化图像?

swift - 即使在 Xcode 10.1 中自定义后, TableView 仍然显示基本

iphone - 透明的 iPhone 应用程序

iphone - 同一商店不能添加两次

Xcode 中的 iOS 应用程序内存使用量不断上升

ios - 日期选择器 iOS