QFCodable
- 类似于系统 Codable 的基础编解码控件。
- 您可以使用 QFCodable 完全替代系统 Codable。
- QFCodable 支持自定义行为,允许您为一些失败的情况指定默认值,不仅仅是抛出错误。
- QFCodable 还支持指定键的不同名称,并为解析失败值或找不到的字段使用指定的默认值。
- QFCodable 支持将 Data、Dictionary 等类型解码到模型。
当您使用 Bool 类型接收这些值时,QFCodable 会将这些值视为 true 值。您可以通过重写此方法来自定义定义您的值。
static func allowedTrueValues() -> [Any]? {
[true, 1, "1", "True", "yes"]
}
示例
enum Gender: Int, QFCodable {
case unknown = -1
case female = 0
case male = 1
}
struct TestModel: QFCodable {
var name: String
var uid: Int
var gender: Gender
var address: String
static func decodingDefaultValue<CodingKeys>(for key: CodingKeys) -> Any? where CodingKeys : CodingKey {
if key.stringValue == "gender" {
return Gender.unknown
}
return nil
}
static var modelCustomPropertyMapper: [String : QFCodableKeysMapperValue]? {
["address": "detail.address"]
}
}
let data = [["name": "zhangsan",
"uid": "123456",
"gender": "1",
"detail": ["address": "广州市白云区光明街道12号"]
],
["name": "lisi",
"uid": "223567",
"detail": ["address": "上海市浦东区解放街道1号"]
],
["name": "wanwu",
"uid": ""
],
["name": "zhaoliu"
]]
if let model = [TestModel].init(from: data) {
print(model)
}
用法
pod 'QFCodable'