我在应用程序中下载了一些PDF文件,想在关闭应用程序时删除这些文件.

出于某种原因,它不起作用:

创建文件:

let reference = "test.pdf"    
let RequestURL = "http://xx/_PROJEKTE/xx\(self.reference)"
let ChartURL = NSURL(string: RequestURL)

//download file
let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! as NSURL
let destinationUrl = documentsUrl.URLByAppendingPathComponent(ChartURL!.lastPathComponent!)
if NSFileManager().fileExistsAtPath(destinationUrl.path!) {
    print("The file already exists at path")
} else {
    //  if the file doesn't exist
    //  just download the data from your url
    if let ChartDataFromUrl = NSData(contentsOfURL: ChartURL!){
        // after downloading your data you need to save it to your destination url
        if ChartDataFromUrl.writeToURL(destinationUrl, atomically: true) {
            print("file saved")
            print(destinationUrl)
        } else {
            print("error saving file")
        }
    }
}

然后我想调用test()函数来删除项目,如下所示:

func test(){

    let fileManager = NSFileManager.defaultManager()
    let documentsUrl =  NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! as NSURL

    do {
        let filePaths = try fileManager.contentsOfDirectoryAtPath("\(documentsUrl)")
        for filePath in filePaths {
            try fileManager.removeItemAtPath(NSTemporaryDirectory() + filePath)
        }
    } catch {
        print("Could not clear temp folder: \(error)")
    }
}

推荐答案

我相信你的问题在于:

let filePaths = try fileManager.contentsOfDirectoryAtPath("\(documentsUrl)")

你用contentsOfDirectoryAtPath()来表示NSURL.您可以选择路径字符串或URL,而不是try 将两者混合使用.为了预先清空可能出现的下一个问题,首选URL.try 使用contentsOfDirectoryAtURL()removeItemAtURL().

解决上述问题后,另一件奇怪的事情是:当你试图删除文件时,为什么要使用NSTemporaryDirectory()作为文件路径?您正在阅读文档目录,应该使用它.

Swift相关问答推荐

Vapor - 流利的,将对象保存到 PostgreSQL

为什么swiftui中的导航视图栏那么大?

AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false

如何将一个 SwiftUI 视图作为变量传递给另一个视图结构

我可以将 Xcode 与 iPhone Simulator.app 一起安装在外部硬盘上吗?

SwiftUI - 列表中的两个按钮

RunLoop 与 DispatchQueue 作为调度程序

替代 SwiftUI ViewBuilder 块中的 switch 语句?

如何在 SwiftUI 的 ScrollView 中创建多行文本?

如何使 TextField 右对齐(尾随)

Xcode忽略导入

SwiftUI 中文本的自定义字体大小

SwiftUI 中的约束有什么用?

Swift(UI) 中的“some”关键字是什么?

使用 SwiftUI 转到新视图

SwiftUI `@State` 关键字有什么作用?

Xcode 和 Swift - 没有标题栏但有关闭、最小化和调整大小按钮的窗口

支持的 Swift 字符串格式说明符有哪些?

如何从元组数组创建字典?

如何为 Swift 类自动创建初始化程序?