美文网首页
Swift4 解决使用 Codable JSON 转成 Mode

Swift4 解决使用 Codable JSON 转成 Mode

作者: 万事皆成 | 来源:发表于2018-07-09 09:33 被阅读46次

    情景描述:

    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 \n [closed]

    反思:

    最近在做 iOS 项目,从接触 Codable 到运用到项目中投入 20+ 小时,期间有考虑 MarkDown , JSON , 特殊字符 \r\n 的问题,由于定位不准确,中间放弃了 Codable, 改用 SwiftyJSON , 手动写 init(json: JSON) 进行转换,昨晚和鸣飞聊到这个问题,在他的指导下重新考虑 Codable,最终找出问题的根源。我看了官网的例子很简单,没有就直接上接口数据跑,接口碰到 Mardown, JSON 等一系列问题,走了很多弯路才有比较好的理解,耗费很多精力和心力。在今后开发一定要切记:掌握基础知识点,从简单的例子开始,准确定位问题

    感慨:

    时隔一年重新做 iOS 项目,本以为做起来会比较顺利,没想到各种问题,深感自己对程序开发的不足,接下来十几天,开足马力,全力投入 iOS Swift 项目开发,还会有多少坑,一定要砥砺前行,让 链闻 APP 早日上架。
    感谢鸣飞的耐心指导,还有熊主席的名言:只要思想不滑坡,办法总比问题多

    相关文章

      网友评论

          本文标题:Swift4 解决使用 Codable JSON 转成 Mode

          本文链接:https://www.haomeiwen.com/subject/hfxzuftx.html