我的GitHub
0%

Swift-ObjectMapper入门

背景

突然很想学swift…不怕死的我在完全没用过的情况下决定通过重构公司的古老项目来完成这段学习之旅….
model转json或者json转model是很常见的需求….所以这就是为什么我要用ObjectMapper了…(其实是我把# SwiftyJSON
的star数错了..我可能会趁用的还不多改成SwiftyJSON,毕竟ObjectMapper实在查不到什么资料不是吗…)

使用

初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import UIKit
import ObjectMapper

class BaseModel: Mappable {
//定义属性
var name : String? = "wuxing"
init() {
//为什么要写这个init,原因很简单,总有些时候你仅仅想初始化一个model,而非通过外部传入数据初始化
}

required init?(map: Map) {
//重写ObjectMapper的init
}

func mapping(map: Map) {
//转换规则
name <- map["name"]
}
}

如图,基本已经写得很清楚了emm

规则转换

有些时候,有的值是int或者bool,你会发现死活转换不出来…这时候就要自己写转换规则了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

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)
}


// 转换规则


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"
})


}

就这样,就能转换了.

end

其他好像也没什么好写的…不过我写得时候说实话,搜都搜不到什么示例…
不会的时候确实觉得很难用,会用了觉得还ok,不过用使用范围更广的框架一定是更好的(坑都被人踩完了emmm)

看看我能不能把ObjectMapper换成SwiftyJSON吧

我是阿星,阿星的阿,阿星的星!