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