CodableHelper 0.1.2

CodableHelper 0.1.2

zgj 维护。



  • zgj

CodableHelper

方便快捷的Codable的extension,解放你的双手

使用方法eg

struct Student {
    let name: String
    let sex: String
    let age: Int
    let school: String
    let pic: URL
    let scores: Double
    let ff: Double? // 这个字段可能为空(即后台不反回这个字段)
    let ss: Int? // 这个字段可能为空(即后台不反回这个字段)
 }
 

let c = try decoder.container(keyedBy: CodingKeys.self)

1: 解放decode(type, forKey: key)

a: 原始类型---即后台直接返回的类型跟所需类型一样

使用前

name = try c.decode(String.self, forKey: .name)

使用后

name = try c[.name, String.self]()

b: 非原始类型,即把String类型转换成所需类型(可以方便快捷地将后台返回的String类型转换成Int、Double、Float、URL……,只需遵守ConvertFromString协议即可)

使用前

if let age = try? c.decode(String.self, forKey: .age) {
  self.age = Int(age) ?? defaultValue
} else {
  self.age = defaultValue
}

使用后

age = try c[.age](Int.self)

2: 解锁decodeIfPresent(type, forKey: key)

a: 原始类型—即后台直接返回的类型与所需类型相同

使用前

if let ff = c.decodeIfPresent(Double.self, forKey: .code) {
    self.ff = Double(ff) ?? defaultValue
}

使用后

ff = try c[.ff, defaultValue](Double.self)

b: 非原始类型,即把String类型转换成需要的类型(可以方便快捷地把后台返回的String类型转换成Int/Double/Float/URL……只要遵守ConvertFromString协议即可)

使用前

if let scores = c.decodeIfPresent(String.self, forKey: .code) {
    self.scores = Double(scores) ?? defaultValue
} else {
    scores = defaultValue
}

使用后

scores = try c[.scores, defaultValue](Double.self) ?? defaultValue

CocoaPods

pod 'CodableHelper'