我正在使用iCloud的UIDocument。我没有使用CoreData。删除UIDocument的最佳方法是什么?如何删除iCloud文档?
回答
从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];
这是我用来删除文档的方式,检查出来。 这对我来说太好了。 感谢
我想我找到了解决办法:
[[NSFileManager defaultManager] setUbiquitous:NO itemAtURL:url destinationURL:nil error:nil]
来源: http://oleb.net/blog/2011/11/ios5-tech-talk-michael-jurewitz-on-icloud-storage/
这并不与工作的iCloud现在忽略这调用一个无价值的destinationURL – 2014-07-03 12:06:57
“管理生命Cyle文档”下的“删除文档的看到苹果的文档。‘
从Document-Based App Programming Guide for iOS的"Deleting a Document"部分复制
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];
}];
});
NB。’当您从存储中删除文档时,您的代码应与UIDocument在读取和写入操作方面的大致程度相近。它应该在后台队列异步执行删除,它应该使用文件的协调。”
如果您使用的是'UIDocument',则不需要实现您自己的NSFileCoordinator,它已经被烘焙到'Uidocument'中。在多个NSFileCoordinator实例中使用你的方法是很昂贵的结果。见:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileCoordinators/FileCoordinators.html – Joseph 2014-03-11 09:42:15
@约瑟夫我想知道,从你上面的答案,是我为什么无法删除一个来自iCloud或应用程序的UIDocument对象的项目在尝试时会挂起?我的相关问题[这里](http://stackoverflow.com/questions/43821141/app-hangs-deleting-icloud-document-when-following-guideline-using-nsfilecoordi) – yohannes 2017-05-07 11:11:08
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)")
}
}
}
}
- 1. 如何在iCloud Drive中创建文档?
- 2. 删除iCloud容器内容
- 3. 使用支持iCloud的文件夹中的文档删除iOS应用程序
- 4. 如何删除从PPT文档
- 5. 如何删除里和RDoc文档
- 6. 如何使用Node.js Mongoose删除文档?
- 7. 如何在MongoDB中删除文档?
- 8. 如何加快删除文档,而行
- 9. Elasticsearch - 如何删除文档列表?
- 10. 同步文档到iCloud
- 11. 如何从XML文档中删除/删除DOCTYPE声明?
- 12. 如何从Solr索引中删除逻辑删除的文档?
- 13. 如何从WSS 3.0中的文档库中删除文档?
- 14. 如何从文档数组中删除子文档<condition>?
- 15. 如何用空的“”文档ID删除一个couchdb文档?
- 16. 如何使用文档ID从mongoDB集合中删除文档?
- 17. 删除Gensim中的文档
- 18. jQuery文档删除键
- 19. 删除文档目录iphone
- 20. 永久删除Google文档
- 21. 从mongoDB中删除文档
- 22. 用空ID删除文档
- 23. 删除存档文件
- 24. 删除从Word文档
- 25. 删除SharePoint文档库
- 26. 在用户禁用iCloud之后制作本地iCloud文档
- 27. 如何根据该文档的任何给定字段删除N个文档?
- 28. 删除应用程序时是否删除文档文件夹?
- 29. 如何从iCloud中删除文件而不将其首先下载到设备?
- 30. 如何有效地删除文档库中的所有文件?
根据文档,你必须删除背景队列上的异步内容:http://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle。 html#// apple_ref/doc/uid/TP40011149-CH4-SW4 – Jonny 2012-06-25 07:09:58
这里工作的地方没有利用'UIDocument'实现'NSF ileCoordinator'阿德里安萨利的答案是更好的。 – Joseph 2014-03-11 09:43:28
仅供参考,请注意,如果文档尚未从iCloud下载到设备,'removeItemAtURL:'将不会删除该文档。 – Mark 2015-02-12 08:45:45