当前位置: 首页 > 知识库问答 >
问题:

如何在Swift5中将UIImage保存为UserDefaults

吴城
2023-03-14

我试图将用户图像保存为userDefaults,但我总是收到错误“Thread 1:”尝试插入非属性列表对象(函数)以进行键保存“这是我的代码

import UIKit

class productSelectionPage: UIViewController {
    @IBOutlet weak var productImageView: UIImageView!


    override func viewDidLoad() {
        super.viewDidLoad()

        // Save image
        let image = UIImage(named: "user")
        let imageData = UIImage.jpegData(image)
        UserDefaults.standard.setValue(imageData, forKey: "savedImage")

    }
    @IBAction func offerButtonTapped(_ sender: UIButton) {
        // present image
        let imageData = UserDefaults.standard.object(forKey: "savedImage")
        let image = UIImage(data: (imageData as! NSData) as Data)
        productImageView.image = image
        // crash

        
        
    }
    

}

共有1个答案

应向晨
2023-03-14

尝试像这样使用PropertyListEncoder()和Decoder:

func saveImage() {
    guard let data = UIImage(named: "image").jpegData(compressionQuality: 0.5) else { return }
    let encoded = try! PropertyListEncoder().encode(data)
    UserDefaults.standard.set(encoded, forKey: "KEY")
}

func loadImage() {
     guard let data = UserDefaults.standard.data(forKey: "KEY") else { return }
     let decoded = try! PropertyListDecoder().decode(Data.self, from: data)
     let image = UIImage(data: decoded)
}
 类似资料:
  • 问题内容: 我正在尝试保存到,然后在Swift中读回新的内容。要转换到我使用下面的代码: 如何将(即)转换回新的? 问题答案: 假设图像的比例为1。 在Swift 4.2中,将以下代码用于get Data()。

  • 问题内容: 到目前为止,我正在为iOS应用程序构建扫描仪组件,并且将结果图像裁剪为正确的角度。现在,我需要将彩色图像转换为黑白“扫描”文档。 我尝试使用-“ CIPhotoEffectNoir”,但它的灰度更高,然后完全是黑白。我希望获得100%黑色和100%白色的全对比度图像。 我该如何实现?谢谢 问题答案: 您可以使用CIColorControls并设置Contrast Key 来增加黑白对比

  • 我在iOS应用程序中保存了一个名为abc.JSON的JSON文件。它被保存到以下路径: 路径为什么不断变化? 如果模拟器保存的文件(abc.json)的路径不断变化,如何读取该文件? 我试图找到答案,但没有找到任何东西来澄清我的困惑。

  • 我试图将字节保存为图像,但似乎不起作用。 以下是我尝试过的: 但我得到一个错误,说它不能写模式RGBA为JPEG,所以我猜这个方法只适用于PNG?如果是这样的话,有没有其他方法来处理jpeg图像?

  • 问题内容: 通过下面的代码,我已经能够保存cookie,但是一旦关闭应用程序,cookie就会消失。 这是怎么引起的,我该如何解决? 问题答案: 您必须告诉CookieSyncManager 在 加载有问题的页面 后 进行同步。在您的示例代码中,该方法在尝试加载页面之前完全执行,因此同步过程(异步发生)可能会在加载页面之前完成。 相反,告诉CookieSyncManager同步WebViewCli

  • 我有一个画布元素,其中有一个绘图,我想创建一个按钮,当点击它时,它将把图像保存为一个png文件。因此它应该打开“保存、打开、关闭”对话框... 我使用这个代码 但当我在IE9中测试它时,一个新窗口打开了,上面写着“网页无法显示”,其url是: 有人知道怎么解决这个吗?