クラウドでドキュメントを操作しています... * ドキュメントをクラウドに追加します * そのドキュメントをクラウドから削除します * どういうわけか、そのドキュメントは数秒後に再び表示されます。
詳細は次のとおりです。
このような UIDocument のインスタンスを作成します
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:@"Documents"] URLByAppendingPathComponent:@"somenewfilename"];
MyDoc* docTemp = [[MyDoc alloc] initWithFileURL:ubiquitousPackage];
docTemp.mapContent = [NSString stringWithString:self.currentdocument.mapContent];
[docTemp saveToURL:[docTemp fileURL]
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
DLog(@"New document %@ saved/added: %@", newFilename, docTemp);
}
else {
DLog(@"Failed saving new document: %@", newFilename);
}
[docTemp release];
}];
次に、次のように後で削除します。
NSURL* fileURL = self.currentdocument.fileURL;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
NSError* error = nil;
[fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting error:&error byAccessor:^(NSURL* writingURL) {
if (error != nil) {
DLog(@"Error with %@! %@", fileURL, error);
return;
}
DLog(@"Got writingURL: %@", writingURL);
NSFileManager* fileManager = [[NSFileManager alloc] init];
if ([fileManager removeItemAtURL:writingURL error:nil]) {
DLog(@"Deleted %@!", writingURL);
}
else {
DLog(@"ERROR Failed deleting %@!", self.currentdocument);
}
[fileManager release];
[fileCoordinator release];
}];
});
上記を実行したにもかかわらず、ファイルが (短い) 間削除されたように見えますが、削除されたドキュメントが 1 秒または数秒後にクラウドに再表示される場合がいくつかあります。(これは、別のデバイスの iCloud 設定、または更新に関する通知を送信するクエリを介して確認できます)。ファイルが削除されたままになる場合があります。どうしたの?
設定 -> iCloud からファイルを削除しても、上記のパターンが発生することに注意してください。ファイルは数秒後に魔法のように再表示されます。タイミングの問題?同期の問題?