我在应用程序中下载了一些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.您可以 Select 路径字符串或URL,而不是try 将两者混合使用.为了预先清空可能出现的下一个问题,首选URL.try 使用contentsOfDirectoryAtURL()removeItemAtURL().

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

Swift相关问答推荐

纹理资源加载问题(图像解码失败)

SwiftUI状态更新

绑定到可选值的非可选属性?'

如何在每天午夜重置布尔值

UIBezierPath() 和 DragGesture:连接点创建角而不是曲线

格式化大货币数字

闭包 - deinit self 对象的时间

在 Vapor 4 中使用协议的通用流利查询

用户输入以更改通过点击生成的形状大小

Swift UI 不重绘 NSViewRepresentable 包装的文本字段

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

如何获取 NSRunningApplication 的参数?

为什么 Swift Tuples 只能在元素个数小于等于 6 的情况下进行比较?

swift 如何从 Int 转换?到字符串

Swift 协议只能设置?

MKAnnotation Swift

无法停止 AVPlayer

如何在 SwiftUI 中的一个视图上显示两个alert ?

iOS:如何检测用户是否订阅了自动更新订阅

在 Swift 中, !函数签名中的符号意味着什么?