8

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

4

5 回答 5

16

复制自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];
    }];
});

注意:“当您从存储中删除文档时,您的代码应该近似于 UIDocument 对读写操作所做的操作。它应该在后台队列上异步执行删除,并且应该使用文件协调。”

于 2013-02-22T14:51:27.440 回答
10

要从 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];

这是我用来删除文档的方式,检查一下。这对我来说很棒。谢谢

于 2012-04-19T03:52:49.643 回答
4

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)")
            }
        }
    }
}
于 2017-03-13T03:14:08.383 回答
0

我想我找到了解决方案:

[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:url destinationURL:nil error:nil]

来源: http: //oleb.net/blog/2011/11/ios5-tech-talk-michael-jurewitz-on-icloud-storage/

于 2012-04-19T03:52:26.710 回答
0

请参阅“删除文档”下的“管理文档生命周期”的 Apple 文档。

于 2012-04-19T03:56:12.933 回答