@KilometersPerHour
對於 Swift 沒有自動支援 Encode/Decode 的型別,我們可以利用 Property Wrapper 來讓自訂型別自動做編碼解碼的動作。
@propertyWrapper
struct KilometersPerHour {
var wrappedValue: Measurement<UnitSpeed>
}
extension KilometersPerHour: Codable {
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
let rawValue = try container.decode(Double.self)
wrappedValue = Measurement(
value: rawValue,
unit: .kilometersPerHour
)
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
try container.encode(wrappedValue.value)
}
}
Last updated
Was this helpful?