在Swift中解码图片在Swift中不起作用

问题描述 投票:0回答:2

我在这里有问题。我有一个包含图片的自定义对象的数组。当我将我的应用程序安装到手机上时,所有图片都在原处,但是当我尝试使用UserDefaults将更改保存到我的阵列中时-所有图片都保存了,图片除外。我发现问题出在解码图片上。它们都变为占位符图片。有人可以帮我说什么错吗?

 required init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)
    englishWord = try container.decode(String.self, forKey: .englishWord)
    belarusianWord = try container.decodeIfPresent(String.self, forKey: .belarusianWord) ?? ""
    englishDefinition = try container.decodeIfPresent(String.self, forKey: .englishDefinition) ?? ""
    belarusianDefinition = try container.decodeIfPresent(String.self, forKey: .belarusianDefinition) ?? ""

    let data = try container.decodeIfPresent(Data.self, forKey: CodingKeys.wordImage)
    if let data = data {
        guard let wordImage = UIImage(data: data) else {
            throw NSError(domain: "Error decoding logo", code: 0, userInfo: nil)
        }
        self.wordImage = wordImage
    } else {
        wordImage = UIImage(named: "placeholder")!
    }
}

public func encode(to encoder: Encoder) throws {
    var container = encoder.container(keyedBy: CodingKeys.self)
    let data = UIImage().pngData()
    try container.encode(data, forKey: CodingKeys.wordImage)
    try container.encode(self.englishWord, forKey: .englishWord)
    try container.encode(self.belarusianWord, forKey: .belarusianWord)
    try container.encode(self.englishDefinition, forKey: .englishDefinition)
    try container.encode(self.belarusianDefinition, forKey: .belarusianDefinition)
}
swift uiimage nsdata decoding
2个回答
0
投票

let data = UIImage().pngData()

是一个空的nil数据,请确保使用真实图像进行处理


0
投票

encode(to:)方法中,只需替换

let data = UIImage().pngData()

let data = self.wordImage.pngData()
© www.soinside.com 2019 - 2024. All rights reserved.