首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图片从图片库加载到我的UIImageView中,但当我重新启动应用程序时,图片不会更改

将图片从图片库加载到我的UIImageView中,但当我重新启动应用程序时,图片不会更改
EN

Stack Overflow用户
提问于 2019-05-05 00:47:42
回答 1查看 45关注 0票数 0

我有一个imageView和一个按钮,可以从图片库上传图片并将其保存在imageView中。我做了documentDirectory,所以当我将照片上传到imageView时,即使我关闭了应用程序,它也会将图片保存在imageView中。

但我的问题是,每当我上传新照片时,它都会毫无问题地改变。但当我关闭应用程序并再次启动它时,老照片又回来了。

代码语言:javascript
复制
func saveImage(image : UIImage, imageName: String){
    let documentDirectoryPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!

    let fileURL = documentDirectoryPath.appendingPathComponent(imageName)
    if let data = UIImageJPEGRepresentation(image, 1.0),
        !FileManager.default.fileExists(atPath: fileURL.path) {
        do {
            try data.write(to: fileURL)
            print("Image saved")
        } catch {
            print("Image save error:", error)
        }
    }
}

func getImage(imageName: String) -> UIImage?{
    let documentDirectoryPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
    let fileURL = documentDirectoryPath.appendingPathComponent(imageName)
    let image = UIImage(contentsOfFile: fileURL.path)
    return image
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let image = info[UIImagePickerControllerOriginalImage] as? UIImage
    imageView.image = image
    saveImage(image:image!, imageName: "profile.jpg")
    picker.dismiss(animated: true, completion: nil)
}

override func viewDidLoad() {
    super.viewDidLoad()

    if let image = getImage(imageName: "profile.jpg"){
        imageView.image = image}
    }

我期待图像的变化,并将保存,即使我关闭应用程序。

但实际上,它总是返回到我上传的第一张图片。

EN

回答 1

Stack Overflow用户

发布于 2019-05-05 01:46:40

看起来就像在saveImage中,您正在检查文件是否已经存在,如果文件确实存在,则不进行保存。这意味着当你第一次选择一个图片时,它会正确地保存,但任何后续的图片选择都会更新控件,但不会更新文件,这将导致下一次打开应用程序时旧图片再次出现。因此,您可能希望从if中完全删除fileExists检查。

您可以通过向saveImage中执行print()if语句中添加一个else来验证这是发生了什么,并且在您第二次选择图像时,它应该结束在您的日志文件中:

代码语言:javascript
复制
if let data = UIImageJPEGRepresentation(image, 1.0),
    !FileManager.default.fileExists(atPath: fileURL.path) {
    // ...
}
else {
    print("File exists -- image not saved")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55984738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档