为什么我保存在目录中的图像在安装新版本后不显示?

Why do my images saved in directory not appear after a new build is installed?

我这样从用户的照片库中保存图片

func saveImage (image: UIImage, path: String ) -> Bool{
    let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
    let result = jpgImageData!.writeToFile(path, atomically: true) 
    return result
}

func getDocumentsURL() -> NSURL {
    let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
    return documentsURL
}

func fileInDocumentsDirectory(filename: String) -> String 
    let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename)
    return fileURL.path!
}

let imagePath = fileInDocumentsDirectory(myImageName)
saveImage(yourPickedImage, path: imagePath)

我是这样读那些图片的

func loadImageFromPath(path: String) -> UIImage? {
    let image = UIImage(contentsOfFile: path)
    return image
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! Cell


    cell.backgroundImage.image = loadImageFromPath(String(Globals.imagesArray[(indexPath as NSIndexPath).item]))

一切正常,直到我在 Xcode 8 中安装新版本,图像才加载到 UIImageView 中。

我感觉可能是文件路径发生了变化,因为如果我退出并重新启动应用程序,图像会加载,但不是从新版本加载。

我该如何补救?

谢谢

正如您已经怀疑的那样,问题是您正在保存 path 的值并稍后使用它来尝试加载文件。你不能那样做,因为每次的路径都不一样。您需要完成所有调用 imagePath = fileInDocumentsDirectory(myImageName) 的工作才能 加载 路径,就像您 保存 它时所做的一样.

(此外,虽然这与您的问题无关,但构造一个 URL 然后从中创建一个字符串路径,就像您在 fileInDocumentsDirectory 中所做的那样,是愚蠢的。坚持URL贯穿始终!)