気をつけること
- 他の class (struct) に依存していない class (struct) から書き換える
変換
Before
import ObjectMapper
struct Item: Mappable {
var id: Int = 0
var name = ""
init?(map: Map) { }
mutating func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
...
}
}
After
import Decodable
struct Item {
let id: Int
let name: String
}
extension Item: Decodable {
static func decode(_ json: Any) throws -> Item {
return try Item(
id: json => "id",
name: json => "name"
)
}
}
ネストしてある class (struct) を置き換えるときはこんな感じになる
親 class (struct)
import ObjectMapper
struct User: Mappable {
var id: Int = 0
var name = ""
var item: Item?
...
init?(map: Map) { }
mutating func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
...
do {
item = try Item.decode(map["item"].JSON)
} catch {
// なんか例外処理
}
}
}
子 class (struct)
import Decodable
struct Item {
let id: Int
let name: String
}
extension Item: Decodable {
static func decode(_ json: Any) throws -> Item {
return try Item(
id: json => "item" => "id",
name: json => "item" => "name"
)
}
}
こんな感じでちまちま置き換えて、すべての子 class (struct) がDecodableになったら親ごと一気にDecodableで最適化していきます。
毎日少しずつリファクタリングしていきます。
🐣