【问题标题】:Able to write/read file but unable to delete file SWIFT能够写入/读取文件但无法删除文件 SWIFT
【发布时间】:2017-02-01 06:21:37
【问题描述】:

我在 iOS 文档目录中存储了一个 .jpg 图像。我可以写文件和读文件,但是当谈到删除它们时,它说没有这样的文件,但那不可能,因为我可以用相同的 url 读取它。

阅读:

let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let path = NSURL(fileURLWithPath: paths[0] as String)
let fullPath = path.appendingPathComponent(info["pi"] as! String)

let data = NSData(contentsOf: fullPath!)

删除:

let fileManager = FileManager.default
fileManager.delegate = self
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let path = NSURL(fileURLWithPath: paths[0] as String)
let fullPath = path.appendingPathComponent(info["pi"] as! String)

            do {
                try fileManager.removeItem(atPath: "\(fullPath!)")
            } catch {
                print("\(error)")
            }

它抛出:

Error Domain=NSCocoaErrorDomain Code=4 "“image_496251232.806566.jpg” couldn’t be removed." UserInfo={NSUnderlyingError=0x1758eb40 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}, NSFilePath=file:///var/mobile/Containers/Data/Application/269ADA58-6B09-4844-9FAA-AC2407C1D991/Documents/image_496251232.806566.jpg, NSUserStringVariant=(
    Remove
)}

【问题讨论】:

  • 请打印完整路径
  • file:///var/mobile/Containers/Data/Application/269ADA58-6B09-4844-9FAA-AC2407C1D991/Documents/image_496251232.806566.jpg

标签: swift directory delete-file nsfilemanager


【解决方案1】:

您的fullPath 变量是(可选)URL。要将其转换为文件路径字符串,请使用 .path 属性,而不是字符串插值:

fileManager.removeItem(atPath: fullPath!.path)

或者更好的是,直接使用 URL 而不将其转换为路径:

fileManager.removeItem(at: fullPath!)

(并摆脱强制解包以支持选项绑定... :-)

【讨论】:

  • 你知道目标 c 等价物是什么吗?
最近更新 更多