Swift 的属性包装器是语法糖,
他可以让代码更加的声明式
定义属性的时候,把规则写进去
属性包装器, 主要使用 wrappedValue, 有时候用到 projectedValue
问题:
存在这样的一个结构体:
struct Figure: Decodable {
var name: String
var age: Int
}
后端传过来,一个 json,
要求 json 对应的内容,长这样,
能够解析出来
var dict: [String: Any] = ["name": "666", "age": 666]
json 对应的内容,长这样,
也可解析出来
dict = ["name": 666, "age": "666"]
问题,解码一个属性,他的数据可能有多种类型
技巧一,使用属性包装器
提供解码方法
static var losslessDecodableTypes:, 是一个解码方法的集合
系统提供的 LosslessStringConvertible 协议,可以让字符串,转值
public typealias LosslessStringCodable = LosslessStringConvertible & Codable
public struct LosslessDefaultStrategy<Value: LosslessStringCodable>{
public static var losslessDecodableTypes: [(Deco

本文探讨了解决Swift中解码一个可能有多种类型的属性的两种技巧。第一种方法利用属性包装器,通过实现`Decodable`协议自定义解码过程,先尝试标准类型解码,如果失败再尝试其他类型。第二种方法则是通过定义自定义解码过程,使用枚举处理多种类型,虽然不够声明式,但在调用时需要根据业务选择合适类型的值。这两种方法都在实际代码中进行了展示。
最低0.47元/天 解锁文章
811

被折叠的 条评论
为什么被折叠?



