删除目录中的内容时出错 - Domain = NSCocoaErrorDomain Code = 4 | Domain = NSPOSIXErrorDomain Code = 2“没有这样的文件或目录”

时间:2017-02-01 07:37:06

标签: swift swift3 nsfilemanager

如何在运行以下代码时修复以下错误?我已经搜索过SO但是找不到Swift 3的任何内容。

HELPDESK_DASHBOARD

日志:

  

错误Domain = NSCocoaErrorDomain Code = 4“”。无法移除.DS_Store“。”的UserInfo = {NSFilePath =文件:///用户/ CIPL0469 /库/开发商/ CoreSimulator /设备/ F0106B28-C4D1-4FE2-A425-D04C6BFDDC01 /数据/容器/数据/应用/ A5AB9B7B-6174-4BA7-9EFD-0E9F1C98CB17 / Documents / .DS_Store,NSUserStringVariant =(       去掉   ),NSUnderlyingError = 0x60800004fed0 {错误域= NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”}}

     

错误域= NSCocoaErrorDomain Code = 4“”2017-01-31_10-44-21.m4a“无法删除。”的UserInfo = {NSFilePath =文件:///用户/ CIPL0469 /库/开发商/ CoreSimulator /设备/ F0106B28-C4D1-4FE2-A425-D04C6BFDDC01 /数据/容器/数据/应用/ A5AB9B7B-6174-4BA7-9EFD-0E9F1C98CB17 / Documents / 2017-01-31_10-44-21.m4a,NSUserStringVariant =(       去掉   ),NSUnderlyingError = 0x60800004fa80 {Error Domain = NSPOSIXErrorDomain Code = 2“No such file or directory”}}

     

错误域= NSCocoaErrorDomain Code = 4“”2017-01-31_10-44-26.m4a“无法删除。”的UserInfo = {NSFilePath =文件:///用户/ CIPL0469 /库/开发商/ CoreSimulator /设备/ F0106B28-C4D1-4FE2-A425-D04C6BFDDC01 /数据/容器/数据/应用/ A5AB9B7B-6174-4BA7-9EFD-0E9F1C98CB17 / Documents / 2017-01-31_10-44-26.m4a,NSUserStringVariant =(       去掉   ),NSUnderlyingError = 0x60000004f570 {错误域= NSPOSIXErrorDomain代码= 2“没有这样的文件或目录”}}

2 个答案:

答案 0 :(得分:2)

nextObject()

(NS)DirectoryEnumerator始终返回枚举项的完整路径/ url,另外的连接会中断路径。除了将URLString与字符串插值连接起来以将其作为path参数传递之外,其形式根本不起作用。

我建议使用与网址相关的API

let fileManager = FileManager.default
do {
    let url = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    if let enumerator = fileManager.enumerator(at: url, includingPropertiesForKeys: nil) {
        while let fileURL = enumerator.nextObject() as? URL {
            try fileManager.removeItem(at: fileURL)
        }
    }
}  catch  {
    print(error)
}

答案 1 :(得分:0)

只是说清楚:

        let addr = one["resourceAddr"] as! String
        do{
            try FileManager.default.removeItem(at: URL(string:addr)!)
        }
        catch let error as NSError{print("error: ",error.localizedDescription)}