Swift 对象初始化中通过反射访问属性

作者: 公爵海恩庭斯 | 来源:发表于2016-01-08 18:07 被阅读249次

以这样的方式构造对象其实并不推荐。

在与后台通过 Json 通信时,我们通常需要用到大量的数据结构类,并书写大量的代码逻辑,负责将 Json 对象转化为对应的数据结构对象。这些繁琐的代码逻辑浪费了我们太多时间。我们可以通过反射访问实例属性的方法,来简化我们的开发,节约时间:

class MyObject: NSObject {
    var name: String?
    var type: String?
    var anyOther: String?
    // ...
    
    init(dict: Dictionary<String, AnyObject>) {
        super.init()
        
        let children = Mirror(reflecting: self).children.filter { $0.label != nil }
        for child in children {
            self.setValue(dict[(child.label ?? "")], forKey: child.label!)
        }
    }
}

var properties = [String: AnyObject]()
properties["name"] = "Heistings"
properties["type"] = "Human"
properties["someOtherKey"] = "someOtherValue"
    
let a = MyObject(dict: properties)
    
print(a.name ?? "Not initalized") // John
print(a.type ?? "Not initalized") // Human
print(a.anyOther ?? "Not initalized") // Not initalized

相关文章

  • Swift 对象初始化中通过反射访问属性

    以这样的方式构造对象其实并不推荐。 在与后台通过 Json 通信时,我们通常需要用到大量的数据结构类,并书写大量的...

  • 反射-Field:通过反射机制,获取对象属性+私有属性

    反射-Field:通过反射机制,获取对象属性+私有属性

  • Swift Mirror & Error

    Swift是静态语言,他不能像OC一样,直接获取对象的属性和方法,但是Swift标准库依旧提供了反射机制,用来访问...

  • Swift 的便利构造函数

    在Swift中可以使用便利构造函数,在对象初始化的时候加入对对象属性的约束来对对象的初始化进行操作,对于不符合属性...

  • Swift反射之自定义对象转成JSON字符串

    自定义对象转成JSON字符串 主要是通过Swift提供的反射(Mirror)功能,获取到对象及其父类的属性,转成D...

  • swift学习手记-构造函数

    1.对象的创造过程 在swift中必选属性,初始化是分段的,先初始化本类的必选属性,然后再调用super.init...

  • 浅谈Java反射

    总所周知,Java语言是完全面向对象的。类对属性和方法进行封装,通过访问修饰符提供外界可访问的权限。 但是通过反射...

  • Swift构造方法

    构造方法作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy属性)在对象构造完毕后要...

  • 面向对象:反射,内置方法

    反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使...

  • 构造方法总结一

    作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy的)在对象构造完毕后要有初始化值...

网友评论

    本文标题:Swift 对象初始化中通过反射访问属性

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