SwiftyJson 的初步理解

2021-08-14 11:14:52 字數 1954 閱讀 7148

最初的認識 swiftyjson 的本質就是乙個 public struct json結構體

struct json 的構成

public struct json 

public

static

varnull: json

/// object in json 這個是核心的屬性 所有的操作就是 在這給個地方開始的

public

varobject: any

}set else

case

letstring

as string:

type = .string

self.rawstring = string

case _ as nsnull:

type = .null

case nil:

type = .null

case

let array as [any]:

type = .array

self.rawarray = array

case

let dictionary as [string: any]:

type = .dictionary

self.rawdictionary = dictionary

default:

type = .unknown

error = swiftyjsonerror.unsupportedtype}}

}

3 - set 我的初步認識 沒有對其他的過載方法分析 只對整體的做個大致的介紹 初始化方法的時候 設定object 屬性的值 在開始初始化的時候 最先開始的是 初始化懶載入的屬性 然後再對 object 屬性 做set 賦值 賦值的時候。實現了unwrap(newvalue)這個遞迴的方法 推導出json的所有基礎型別 並且返回的是json初始化後的結構體 大概是這樣的 我最喜歡的就是unwrap(newvalue) 遞迴的設定思路 很佩服作者
json }
乙個乙個的json結構體組成

4 get值的時候 對下標進行了過載 可傳遞多個引數的 和 傳遞陣列【】

可傳遞多個引數的過載
public

subscript(path: jsonsubscripttype...) -> json

set

}

傳遞陣列的過載
public

subscript(path: [jsonsubscripttype]) -> json

}set

}}

傳遞 乙個引數的過載 這個引數是 需要實現  jsonsubscripttype  

本上我們都只是會用到 string 和 int 作者已經幫我們把對 string

和 int 做了擴充套件

public

enum jsonkey

public protocol jsonsubscripttype

}extension int: jsonsubscripttype

}extension string: jsonsubscripttype

}

// 傳遞 乙個引數的過載
fileprivate subscript(sub

sub: jsonsubscripttype) -> json

}set

}}

還需了解的乙個是 reduce高階函式 如果你用過 map,filter,等 那麼對reduce的理解也不是難 只需要理解的是 在執行的時候 每次返回的都是乙個json的結構體 那麼你就知道了為什麼可以無限的使用下標獲取到最後的值了

SwiftyJSON的簡單使用

初始化 let json json data datafromnetworking 這裡的object是anyobject,但是必須是能轉會成json的資料型別。傳錯也沒關係,最多你後面再也取不到資料了。let json json jsonobject subscript 下標?從乙個假定對應的是陣...

多型的初步理解

多型 父類的引用型別變數指向了子類的物件 或者是介面的引用型別變數指向了介面實現類物件。多型的前提 必須存在繼承或者實現關係。多型要注意的細節 1.多型情況下,子父類存在同名的成員變數時,預設是訪問父類的成員變數。2.多型情況下,子父類存在同名的非靜態成員函式時,預設是訪問子類的成員函式。3.多型情...

NSURLSession的初步理解

注意 當建立的session做為強引用時,需要自己手動釋放 void dealloc get請求的建立 方法一 1.建立nsurlsession nsurlsession session nsurlsession sharedsession 2.根據會話物件來建立task 第乙個引數 請求物件 第二...