为什么我保存在目录中的图像在安装新版本后不显示?
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贯穿始终!)
我这样从用户的照片库中保存图片
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贯穿始终!)