背景
突然很想學(xué)swift...不怕死的我在完全沒用過的情況下決定通過重構(gòu)公司的古老項(xiàng)目來完成這段學(xué)習(xí)之旅....
model轉(zhuǎn)json或者json轉(zhuǎn)model是很常見的需求....所以這就是為什么我要用ObjectMapper了...(其實(shí)是我把# SwiftyJSON
的star數(shù)錯(cuò)了..我可能會(huì)趁用的還不多改成SwiftyJSON,畢竟ObjectMapper實(shí)在查不到什么資料不是嗎...)
使用
初始化
import UIKit
import ObjectMapper
class BaseModel: Mappable {
//定義屬性
var name : String? = "wuxing"
init() {
//為什么要寫這個(gè)init,原因很簡(jiǎn)單,總有些時(shí)候你僅僅想初始化一個(gè)model,而非通過外部傳入數(shù)據(jù)初始化
}
required init?(map: Map) {
//重寫ObjectMapper的init
}
func mapping(map: Map) {
//轉(zhuǎn)換規(guī)則
name <- map["name"]
}
}
如圖,基本已經(jīng)寫得很清楚了emm
規(guī)則轉(zhuǎn)換
有些時(shí)候,有的值是int或者bool,你會(huì)發(fā)現(xiàn)死活轉(zhuǎn)換不出來...這時(shí)候就要自己寫轉(zhuǎn)換規(guī)則了
import UIKit
import ObjectMapper
class BaseModel: Mappable {
var man : Bool? = true
var age : Int? = 21
init() {
}
required init?(map: Map) {
print("BaseModel初始化")
}
func mapping(map: Map) {
man <- (map["man"],transformBool)
age <- (map["age"],transformInt)
}
// 轉(zhuǎn)換規(guī)則
let transformInt = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
if let value = value {
return Int(value)!
}
return nil
}, toJSON: { (value: Int?) -> String? in
// transform value from Int? to String?
if let value = value {
return String(value)
}
return nil
})
let transformBool = TransformOf<Bool, String>(fromJSON: { (value: String?) -> Bool? in
if let value = value {
return (value as NSString).boolValue
}
return false
}, toJSON: { (value: Bool?) -> String? in
if let value = value {
return String(value)
}
return "false"
})
}
就這樣,就能轉(zhuǎn)換了.
end
其他好像也沒什么好寫的...不過我寫得時(shí)候說實(shí)話,搜都搜不到什么示例...
不會(huì)的時(shí)候確實(shí)覺得很難用,會(huì)用了覺得還ok,不過用使用范圍更廣的框架一定是更好的(坑都被人踩完了emmm)
看看我能不能把ObjectMapper換成SwiftyJSON吧