如何删除iCloud文档?

Adr*_*rli 7 iphone ios icloud

我正在使用iCloud的UIDocument.我没有使用CoreData.删除UIDocument的最佳方法是什么?

Ale*_*fee 14

基于文档的iOS应用程序编程指南"删除文档"部分复制.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
    NSFileCoordinator* fileCoordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
    [fileCoordinator coordinateWritingItemAtURL:fileURL options:NSFileCoordinatorWritingForDeleting
        error:nil byAccessor:^(NSURL* writingURL) {
        NSFileManager* fileManager = [[NSFileManager alloc] init];
        [fileManager removeItemAtURL:writingURL error:nil];
    }];
});
Run Code Online (Sandbox Code Playgroud)

注意:"当你从存储中删除文档时,你的代码应该接近UIDocument对读写操作的作用.它应该在后台队列上异步执行删除,它应该使用文件协调."

  • 如果您使用的是UIDocument,则无需实现自己的NSFileCoordinator,它已被烘焙到UIDocument中。使用您的方法会在多个`NSFileCoordinator`实例中产生昂贵的结果。请参阅:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileCoordinators/FileCoordinators.html (2认同)

Har*_*hah 11

要从iCloud中删除文档,首先必须获取要删除的文件名.然后你可以使用NSFileManager删除它.

NSString *saveFileName = @"Report.pdf";
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
NSURL *ubiquitousPackage = [[ubiq URLByAppendingPathComponent:@"Documents"] URLByAppendingPathComponent:saveFileName];
NSFileManager *filemgr = [NSFileManager defaultManager];
[filemgr removeItemAtURL:ubiquitousPackage error:nil];
Run Code Online (Sandbox Code Playgroud)

这是我用来删除文档的方式,检查出来.这对我很好.谢谢

  • 根据文档,您必须删除后台队列上的异步异步.http://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle.html#//apple_ref/doc/uid/TP40011149-CH4-SW4 (4认同)

Jer*_*ome 6

SWIFT 3来自@AlexChaffee 的回答

func deleteZipFile(with filePath: String) {
    DispatchQueue.global(qos: .default).async {
        let fileCoordinator = NSFileCoordinator(filePresenter: nil)
        fileCoordinator.coordinate(writingItemAt: URL(fileURLWithPath: filePath), options: NSFileCoordinator.WritingOptions.forDeleting, error: nil) {
            writingURL in
            do {
                try FileManager.default.removeItem(at: writingURL)
            } catch {
                DLog("error: \(error.localizedDescription)")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)