Swift 4 Codable JSONを使用してModelへの移行に失敗した問題の解決
1404 ワード
シナリオの説明:
Model
変換手順:Json->Dict->Data->decode
質問:
変換失敗
理由:
インタフェースが返すtag_List値タイプは[[String:Any]]で、modelのtag_とListの[String]タイプが一致せず、model変換に失敗しました
参照先:
Working with JSON in Swift Swift 4 Decodable and newlines [closed]
反省:
最近iOSプロジェクトをしていて、Codableに触れることから運用まで20+時間を投入していますが、その間にMarkDown、JSON、特殊文字rを考慮した問題があり、位置決めが不正確なため、途中でCodableを放棄し、SwityJSONに変更し、手動でinit(json:JSON)を書いて変換し、昨夜鳴飛とこの問題について話し合い、彼の指導の下でCodableを再考しました.最終的に問題の根源を探し出す.私は公式サイトの例を见てとても简単で、直接インタフェースのデータに行って走って、インタフェースはMardown、JSONなどの一连の问题に出会って、多くの回り道を歩いてやっと比较的に良い理解があって、多くの精力と心力を费やします.今後の開発では、基礎知識点を身につけ、簡単な例から問題を正確に位置づけなければならない.
感慨:
一年ぶりにiOSプロジェクトをやり直すと、うまくいくと思っていたが、いろいろな問題があって、自分がプログラム開発に不足していることを深く感じていた.鳴飛の辛抱強い指導に感謝し、熊主席の名言もある.
Model
struct Article: Codable {
var title: String?
var cover_url: String?
var content: String?
var pp_time: String?
var author_name: String?
var author_avatar_url: String?
var origin_link:String?
var tag_list: [String]?
}
変換手順:Json->Dict->Data->decode
if let value = value as? [String: Any], let results = value["results"] as? [[String: Any]] {
let originJsonData = try? JSONSerialization.data(withJSONObject: results, options: [])
if let articles = try? JSONDecoder().decode([Article].self, from: originJsonData!) {
completion(articles)
}
}
質問:
変換失敗
理由:
インタフェースが返すtag_List値タイプは[[String:Any]]で、modelのtag_とListの[String]タイプが一致せず、model変換に失敗しました
参照先:
Working with JSON in Swift Swift 4 Decodable and newlines [closed]
反省:
最近iOSプロジェクトをしていて、Codableに触れることから運用まで20+時間を投入していますが、その間にMarkDown、JSON、特殊文字rを考慮した問題があり、位置決めが不正確なため、途中でCodableを放棄し、SwityJSONに変更し、手動でinit(json:JSON)を書いて変換し、昨夜鳴飛とこの問題について話し合い、彼の指導の下でCodableを再考しました.最終的に問題の根源を探し出す.私は公式サイトの例を见てとても简単で、直接インタフェースのデータに行って走って、インタフェースはMardown、JSONなどの一连の问题に出会って、多くの回り道を歩いてやっと比较的に良い理解があって、多くの精力と心力を费やします.今後の開発では、基礎知識点を身につけ、簡単な例から問題を正確に位置づけなければならない.
感慨:
一年ぶりにiOSプロジェクトをやり直すと、うまくいくと思っていたが、いろいろな問題があって、自分がプログラム開発に不足していることを深く感じていた.鳴飛の辛抱強い指導に感謝し、熊主席の名言もある.