假设我用这个代码将一个图像保存到文档中

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask = NSSearchPathDomainMask.UserDomainMask
if let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true) {
if paths.count > 0 {
    if let dirPath = paths[0] as? String {
        let readPath = dirPath.stringByAppendingPathComponent("Image.png")
        let image = UIImage(named: readPath)
        let writePath = dirPath.stringByAppendingPathComponent("Image2.png") 
        UIImagePNGRepresentation(image).writeToFile(writePath, atomically: true)
    }
  }
}

那我该怎么重新审理呢?记住,与iOS8相比,确切的路径经常发生变化

推荐答案

在运行时,您可以找到用于写入图像的文档目录路径,要将其读回,您可以使用确切的逻辑:

Swift 3和Swift 4.2

let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
let nsUserDomainMask    = FileManager.SearchPathDomainMask.userDomainMask
let paths               = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
if let dirPath          = paths.first
{
   let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("Image2.png")
   let image    = UIImage(contentsOfFile: imageURL.path)
   // Do whatever you want with the image
}

Swift 2

let nsDocumentDirectory = NSSearchPathDirectory.DocumentDirectory
let nsUserDomainMask    = NSSearchPathDomainMask.UserDomainMask
if let paths            = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
{
     if paths.count > 0
     {
         if let dirPath   = paths[0] as? String
         {
             let readPath = dirPath.stringByAppendingPathComponent("Image2.png")
             let image    = UIImage(contentsOfFile: readPath)
             // Do whatever you want with the image
         }
     }
}

Swift相关问答推荐

为表单部分赋予背景 colored颜色 /渐变

MyApp类型不符合协议App''''

我可以在预览中通过拖动手势跳转,但在模拟器中失败

我可以为UIMenu设定一个固定的订单吗?

在数组中查找最大y值的x值

try 从闭包访问返回的字符串时出现无法将类型 '()' 的返回表达式转换为返回类型 'String'编译器错误

如何绑定环境变量ios17

有没有一种方法可以访问封闭实例ObservableObject以从属性包装器中的任何位置调用objectWillChange.send()

从文字创建数组时的 Swift 宏

Swift Combine:如何在保留发布者结果顺序的同时进行收集?

如何测试可选 struct 的协议一致性

如何在 Combine 合并运算符的输出上使用 eraseToAnyPublisher

闭包 - deinit self 对象的时间

使用列表的下一项更新相同的视图

如何处理永远不会失败的 String.Encoding 初始化程序?

为什么更改属性后动画会加速? SwiftUI

在 Swift 中获取双精度的小数部分

subscribeOn 和 observeOn 的顺序重要吗?

协议扩展中的where self是什么

ld:入口点(_main)未定义.对于架构 x86_64:Xcode 9