美文网首页iOS收藏iOS-Swift
Swift 字典转模型 KVC

Swift 字典转模型 KVC

作者: EvanJq | 来源:发表于2017-11-01 14:45 被阅读34次

在iOS开发中,需要对后台请求回来的数据进行处理解析成模型使用。这时就需要对数据(json/字典)转模型处理.
这里介绍不使用第三方框架,使用原生KVC方法。


定义BaseModel

import UIKit

@objcMembers  // 标记为OC属性,Swift4.0后为了与OC的API区分,需要添加,不然键值配对无效
class BaseModel: NSObject {
    convenience init(keyedValues: [String: Any]) {
        self.init()
        // 字典自动匹配属性名赋值
        self.setValuesForKeys(keyedValues)
    }
    
    override init() {
        super.init()
    }
    
    // 不定义遇到未定义字段会报错
    override func setValue(_ value: Any?, forUndefinedKey key: String) {
        // 处理字典中未定义字段,这里直接不处理解析
    }
    
    // 键值配对方法,子类可以重写该方法对特殊字段自定义处理
    override func setValue(_ value: Any?, forKey key: String) {
        super.setValue(value, forKey: key)
    }
}

模型定义时只需继承BaseModel:

class Man: BaseModel {
    var manId: String = ""
    var name: String = ""
    var age: Int = 0
    
    override func setValue(_ value: Any?, forKey key: String) {
        // 处理字段不统一属性
        if key == "id", let id = value as? String {
            manId = id
        } else {
            super.setValue(value, forKey: key)
        }
    }
}

let dict: [String: Any] = ["id": "20170101", "name": "小明", "age": 18]
let man = Man(keyedValues: dict)
print("id: \(man.manId) name: \(man.name) age: \(man.age)")

优点

  • 使用简单,上手快。
  • 原生API集成,轻量,耦合低。

缺点

  • 无法自动处理嵌套属性,需要手动处理。
  • 对后端返回格式依赖性较大,对字段与类型的统一要求高。适合后端格式标准稳定性小项目。
  • 需要手动解析路径。

相关文章

  • 14-Swift中字典转模型

    字典转模型(初始化时传入字典) 字典转模型(利用KVC转化) 一、 普通的字典转模型: 二、利用KVC字典转模型:

  • KVC的简单使用

    KVC字典转模型 KVC 中经常使用的就是字典转模型 KVC的大招 KVC设置对象属性及取值 KVC间接设置对象属...

  • Swift 字典转模型 KVC

    在iOS开发中,需要对后台请求回来的数据进行处理解析成模型使用。这时就需要对数据(json/字典)转模型处理.这里...

  • iOS 字典转模型KVC实现

    字典转模型 KVC 实现 KVC 字典转模型弊端:必须保证,模型中的属性和字典中的key一一对应。 如果不一致,就...

  • Swift 5.0 使用MJExtension 字典转模型

    记录下swift怎么使用MJExtension 字典转模型1.普通的字典转模型 2.字典数组嵌套转模型

  • Swift之KVC 字典转模型

    相关资料 KVC 字典转模型构造函数 建模 plist文件 应用demo DEMO https://github....

  • Swift 4.0 KVC 字典转模型

  • 使用runtime和KVC字典转模型

    使用KVC字典转模型的时候,KVC是通过遍历字典中的所有的key去模型中查找有没有对应的属性名,而runtime则...

  • runtime -- 实现字典转模型

    runtime与KVC字典转模型的区别:1.KVC:遍历字典中所有的key,去模型中查找有没有对应的属性名。2.r...

  • iOS KVC运用

    主要应用场景 KVC 属性赋值 添加和访问私有成员变量(ivar) 字典转模型 取值 模型转字典 集合操作符 自定...

网友评论

    本文标题:Swift 字典转模型 KVC

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