使内置类型符合可编码



我在 Swift 中有一个模型,看起来像:

import Foundation
import SwiftUI
struct Note: Hashable, Codable {
var title: String
var createdDate: Date
var notes: String
var color: Color
var niceDate: String {
let dateformatter = DateFormatter()
dateformatter.dateStyle = .medium
return dateformatter.string(from: self.createdDate)
}
}

现在,它不能符合可编码,因为颜色不符合。但是,我无法扩展它,否则它会给我错误Implementation of 'Encodable' cannot be automatically synthesized in an extension in a different file to the type

如何使注释(带有颜色属性(符合可编码?理想情况下,它也可以应用于其他内置类型。

解决方案之一是使Color符合Codable

struct Color: Codable {
var red: CGFloat = 0.0, green: CGFloat = 0.0, blue: CGFloat = 0.0, alpha: CGFloat = 0.0
var uiColor: UIColor {
return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}
init(uiColor: UIColor) {
uiColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
}
}

如果您仅对 RGB 和 alpha 组件感兴趣,则此方法有效。如果您需要更多,可以使用最初在此处提出的这个包装器。

注意:您可能还需要显式实现EquatableHashable协议。

最新更新