Я пытаюсь вызвать метод saveToURL forSaveOperation completeHandler для UIManagedDocument, однако блок завершения не выполняется. Он терпит неудачу в (1) при первой попытке сохранения и терпит неудачу в (2) при попытках после этого. Я не уверен, означает ли это, что он пишет на диск в первый раз или нет. Однако NSLogs в завершенииHandler вообще никогда не регистрируются.
- (void)useDocument
{
CoreDataSingleton *cds = [CoreDataSingleton getInstance];
UIManagedDocument *document = cds.document;
NSURL *url = document.fileURL;
if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
NSLog(@"This is logged");
[document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
NSLog(@"This is never logged");
if (success) {
self.managedObjectContext = document.managedObjectContext;
}
}];
// (1) Fails here on the first go
} else if (document.documentState == UIDocumentStateClosed) {
NSLog(@"This is logged");
[document openWithCompletionHandler:^(BOOL success) {
NSLog(@"This is never logged");
if (success) {
self.managedObjectContext = document.managedObjectContext;
}
}];
// (2) Fails here on the second go
} else {
self.managedObjectContext = document.managedObjectContext;
}
}
Класс, который реализует это, представляет собой UIViewController, который является источником данных и делегатом UICollectionView. Когда я отключаю UIViewController в качестве источника данных, завершениеHandler завершается успешно, и устанавливается manageObjectContext.
Кто-нибудь знает, в чем проблема?
document
равно нулю, что объясняет, почему первый@"This is never logged"
не печатается. Однако это не объясняет второго.UIDocumentStateClosed
равно 1, так что второе условиеif
не будет выполняться для нулевого документа. - person paulmelnikow   schedule 19.04.2013document
является экземпляромUIManagedDocument
, а не подклассом? - person paulmelnikow   schedule 20.04.2013