swift struct 關鍵字替換 CodingKey

####問題場景
開發過程中經常會遇到模型屬性名字跟系統屬性名字相互衝突,那麼麼需要進行替換。class 類的替換相信大家都已經熟悉,下面介紹struct的key的替換以及踩過的坑。
示例代碼如下

///rows 關鍵字跟 系統屬性衝突
struct GJ_CrawlerModel: Codable {
    var records:Int? //總共多少條記錄
    var page:Int? //當前第幾頁
    var sord:String? //排序
    var total:Int? //總共頁數
    var gj_rows:[gj_data]? //數據數組

    /// 使用Codingkey進行替換 所有屬性都要寫進去
    enum CodingKeys:String, CodingKey{
        case gj_rows = "rows"
        case records
        case page 
        case sord
        case total
    }
}

struct gj_data:Codable{
     var test:String? //最小包裝單位
 }

####說明

  • 模型的數據中rows屬性跟系統的rows屬性衝突
  • 將衝突屬性改成自定義屬性
  • 使用枚舉的方法繼承Codingkey將struct的所有屬性遍歷一遍所有都需要寫,並且將自定義的關鍵字對應到衝突關鍵字
  • decoder json數據 賦值

問題解決

模型賦值比較坑的地方就是swift數據類型不對就會導致整個模型爲nil。
解決辦法,根據真實的json數據對應每個屬性的類型是否正確,在不確定類型的時候就註釋掉屬性然後一個一個的放開如果出現nil則對應的屬性類型不正確。

發佈了123 篇原創文章 · 獲贊 6 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章