如何解决从 UserDefaults 检索图像
当我使用我的应用程序并检索它时,我能够成功地将我的图像保存在用户默认值中,但是我无法弄清楚如何通过 init() 以简单的方式检索它。在我的示例中,它将返回 AppValue.avatar(我的默认图像)但不会返回存储的图像。它找不到以前存储的图像,因此它替换了我的默认图像,但失败了,因为我在已发布的变量中有 UIImage。我认为它必须作为数据进行检索,但如果我将 init() 中的 UIImage 更改为数据,Xcode 会不满意。
class UserSettings: ObservableObject {
@Published var avatar: UIImage {
didSet {
/// Convert to data using .pngData() on the image so it will store. It won't take the UIImage straight up.
let pngRepresentation = avatar.pngData()
UserDefaults.standard.set(pngRepresentation,forKey: "avatar")
printSave(forKey: "avatar",value: avatar)
}
}
init() {
self.avatar = UserDefaults.standard.object(forKey: "avatar") as? UIImage ?? AppValue.avatar
}
}
解决方法
这只是在心理上跟踪事物是什么类型的问题。
您将图像保存为其 pngData
(正确)。这不是 UIImage;它是一个数据。您保存的 pngRepresentation
是数据。
因此,当您检索图像并说 as? UIImage
时,该测试失败。它不是 UIImage。这是一个数据。
因此,获取 data(forKey:)
(或说 as? Data
而不是 as? UIImage
)。现在你有了数据。然后调用 UIImage.init(data:)
来检索图像。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。