2
我正在使用核心数据,并想知道我是否正确地做事情。我打开我的UIManagedDocument
从单身物件使用完成处理程序和块下面。UIManagedDocument CompletionHandler&NSNotification
[[self managedDocument] openWithCompletionHandler:^(BOOL success) {
if(success) {
NSLog(@"DOCUMENT: Success, Opened ...");
// TODO: Things to do when open.
// ...
// ...
}
}];
在我UIViewController
我有安装观察员观看了UIDocumentStateChangedNotification
表明,我就可以开始与文档工作。
- (void)awakeFromNib {
NSLog(@"%s", __PRETTY_FUNCTION__);
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self selector:@selector(documentIsReady) name:UIDocumentStateChangedNotification object:nil];
}
这接缝工作得很好,但我意识到,我不使用回调块。一种解决方案可能是创建我自己的通知并从块发布它,它本质上做了同样的事情,但只是使代码更易于阅读。任何意见将不胜感激。
我确实有多个控制器都使用NSFetchedResultsControllers和UITableViews,但是他们都做同样的UIManagedDocument访问。我的问题是,我在每个控制器上设置了不同的NSFetchResultsControllers,所以我需要进行通信,然后文档已准备就绪,这样我就可以执行我的初始抓取,特别是在“初始控制器”上,因为在托管文档实际上已准备就绪使用。 – fuzzygoat
我的应用类似。我有大约6个不同的UITableViews,每个人都设置它自己的NSFetchedResultsController。第一个控制器创建并打开UIManagedDocument,并将其保留在其某个属性中。之后每个控制器都被赋予一个NSManagedObject(他们将需要创建谓词)的副本,并使用它来设置他们自己的NSFetchedResultsController。由于其他控制器不能访问,除非文档打开并且第一个控制器中的tableview加载了它的数据,我不必担心通知它们。 –
Mine几乎是一样的,唯一的区别是UIManagedDocument是在从AppDelegate实例化的单例中创建的。我本可以把它放在AppDelegate中,但我还有一些其他的东西我想保持分开。感谢您的帮助,非常感谢。 – fuzzygoat