我对如何传递NSManagedObjectContext
有疑问。在我的应用中,好像是我的AppDelegate
处理NSManagedObjectContext
,所以我不应该在我的其他NSManagedObjectContexts
中创建其他ViewControllers
。
所以问题是......
有没有任何惯例或智能方法可以做到这一点?
感谢。
答案 0 :(得分:2)
我传递NSManagedObjectContext的方法是在每个视图控制器中传递一个iVar。我通常会修改初始化程序以包含赋值,类似这样....
MyNewViewController.h
@interface MyNewViewController : UIViewController {
NSManagedObjectContext *managedObjectContext;
}
...
MyNewViewController.m
@implementation MyNewViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andContext:(NSManagedObjectContext *)ctx {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
managedObjectContext = ctx;
}
return self;
}
....
然后,当您调用视图控制器时,只需使用修改后的初始化程序即可。像...
MyNewViewController *nv = [[MyNewViewController alloc] initWithNibName:@"MyNewViewController" bundle:nil andContext:self.managedObjectContext];
现在您已经获得了可以在视图控制器中使用的managedObjectContext的引用。