最初的認識 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 第乙個引數 請求物件 第二...