NSManagedObjectContext,传递它的最佳方式?访问它?

时间:2011-10-12 09:03:06

标签: iphone objective-c ios xcode

我对如何传递NSManagedObjectContext有疑问。在我的应用中,好像是我的AppDelegate处理NSManagedObjectContext,所以我不应该在我的其他NSManagedObjectContexts中创建其他ViewControllers

所以问题是......

有没有任何惯例或智能方法可以做到这一点?

感谢。

1 个答案:

答案 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的引用。