Я тестировал его на днях, и он работал. Сегодня, вызывая этот метод, он никогда не вызывает блок завершения.iCloud - UIDocument saveToUrl не выполняет блок завершения
Есть ли случай, когда блок завершения не вызывается? Я помню, что Apple говорила, что ее всегда называют независимо от того, что произошло.
Вот код блока:
dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
// Get ubiquitous url
NSURL *ubiq = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil];
NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:
@"Documents"] URLByAppendingPathComponent:fileName];
// Create new CloudFile
CloudFile *file = [[CloudFile alloc]initWithFileURL:ubiquitousPackage];
file.data = data;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onDocumentStateChanged:) name:UIDocumentStateChangedNotification object:file];
dispatch_async (dispatch_get_main_queue(), ^(void) {
[file saveToURL:file.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) {
NSLog(@"test");
if (success) {
[self sendEvent:ICLOUD_FILE_SAVE_SUCCESSFUL object:file];
} else {
[self sendEvent:ICLOUD_FILE_SAVE_FAILED];
NSLog(@"kaiCloud: Saving failed. (%@)",fileName);
}
}];
});
});
EDIT: Обратите внимание, что я добавил NSLog (@ "тест"), и я не вижу его получение в журнал.
действительно ли спасение на самом деле происходит? –
Нет. Я не вижу его в iCloud. Странно то, что я ничего не изменил в коде, после того как вернулся, он больше не работает. – Sylpheed
Вы можете добавить журналы для печати 'файл': перед внутренним' dispatch_async' и до сохранения файла (внутри внутреннего асинхронного вызова)? –