ObjectMapperからDecodableに書き換える
気をつけること
- 他の 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で最適化していきます。
毎日少しずつリファクタリングしていきます。
🐣
Author And Source
この問題について(ObjectMapperからDecodableに書き換える), 我々は、より多くの情報をここで見つけました https://qiita.com/keisei_1092/items/afcf34a5ec663913c1ec著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .