SwiftyJson 的初步理解
生活随笔
收集整理的這篇文章主要介紹了
SwiftyJson 的初步理解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SwiftyJson 的初步理解
最初的認(rèn)識(shí) SwiftyJson 的本質(zhì)就是一個(gè) Public Struct JSON結(jié)構(gòu)體
Struct JSON 的構(gòu)成
3 - Set 我的初步認(rèn)識(shí) 沒(méi)有對(duì)其他的重載方法分析 只對(duì)整體的做個(gè)大致的介紹 初始化方法的時(shí)候 設(shè)置object 屬性的值 在開(kāi)始初始化的時(shí)候 最先開(kāi)始的是 初始化懶加載的屬性 然后再對(duì) object 屬性 做set 賦值 賦值的時(shí)候。實(shí)現(xiàn)了unwrap(newValue)這個(gè)遞歸的方法 推導(dǎo)出json的所有基礎(chǔ)類型 并且返回的是JSon初始化后的結(jié)構(gòu)體 大概是這樣的 我最喜歡的就是unwrap(newValue) 遞歸的設(shè)置思路 很佩服作者
JSON{JSON{JSoN } }一個(gè)一個(gè)的JSON結(jié)構(gòu)體組成
4 Get值的時(shí)候 對(duì)下標(biāo)進(jìn)行了重載 可傳遞多個(gè)參數(shù)的 和 傳遞數(shù)組【】
可傳遞多個(gè)參數(shù)的重載 public subscript(path: JSONSubscriptType...) -> JSON {get {return self[path]}set {self[path] = newValue}} 傳遞數(shù)組的重載 public subscript(path: [JSONSubscriptType]) -> JSON {get {return path.reduce(self) { $0[sub: $1] }}set {switch path.count {case 0:returncase 1:self[sub:path[0]].object = newValue.objectdefault:var aPath = pathaPath.remove(at: 0)var nextJSON = self[sub: path[0]]nextJSON[aPath] = newValueself[sub: path[0]] = nextJSON}}} 傳遞 一個(gè)參數(shù)的重載 這個(gè)參數(shù)是 需要實(shí)現(xiàn) JSONSubscriptType 本上我們都只是會(huì)用到 string 和 Int 作者已經(jīng)幫我們把對(duì) String 和 Int 做了擴(kuò)展 public enum JSONKey {case index(Int)case key(String)}public protocol JSONSubscriptType {var jsonKey: JSONKey { get }}extension Int: JSONSubscriptType {public var jsonKey: JSONKey {return JSONKey.index(self)}}extension String: JSONSubscriptType {public var jsonKey: JSONKey {return JSONKey.key(self)}} // 傳遞 一個(gè)參數(shù)的重載 fileprivate subscript(sub sub: JSONSubscriptType) -> JSON {get {switch sub.jsonKey {case .index(let index): return self[index: index]case .key(let key): return self[key: key]}}set {switch sub.jsonKey {case .index(let index): self[index: index] = newValuecase .key(let key): self[key: key] = newValue}}}總結(jié)
以上是生活随笔為你收集整理的SwiftyJson 的初步理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机文化基础作品ppt,计算机文化基础
- 下一篇: Word VBA自动排版(4)- 通过F