Ios 是否可以将动态变量用于类成员变量

Ios 是否可以将动态变量用于类成员变量,ios,swift,class,object,Ios,Swift,Class,Object,我有一门课 class Person { var address:String var number:String var houseNo:String var licenceNo:String .... } let jone = Person() jone.number = "123456" 所以在这里,我需要逐个初始化person类的变量。我在person类中有大约30个变量 难道没有简单的方法可以做到这一点吗 就像我所有的密钥都来自后端一样,比如

我有一门课

class Person {
   var address:String
   var number:String
   var houseNo:String
   var licenceNo:String
   ....
}


let jone = Person()
    jone.number = "123456"
所以在这里,我需要逐个初始化person类的变量。我在person类中有大约30个变量

难道没有简单的方法可以做到这一点吗

就像我所有的密钥都来自后端一样,比如number=123456。是否有一种方法可以让我运行for循环并使用类似的东西

for key in keys {
   john."\(key)" = dict[key]
}

没有办法缩短这个冗长的过程吗?

为什么不使用Person方法将后端响应加载到新的Person对象中

诸如此类:

let jone = Person()
jone.loadDataFrom(response)
或者使用一个人静态的方法

let jone = Person.loadDataFrom(response)

static func loadDataFrom(response:Object) -> Person {
    let p = Person()
    ...
    set response data
    ...

    return p

}

你可以试试这个代码

extension NSObject{
    // fetch all class varible
    func property() -> Mirror.Children {
        return Mirror(reflecting: self).children
    }

    func propertyList() {

        for (name, value) in property() {
            guard let name = name else { continue }
            print("\(name): \(type(of: value)) = '\(value)'")
        }
    }
}
您的类,设置如下代码中的值,这是有帮助的

class Person: NSObject {
    var address:String = ""
    var number:String = ""
    var houseNo:String = ""
    var licenceNo:String = ""

    init(with response: [String: AnyObject]) {
        for child in self.property() {

            if let key = child.label, let value = response[key] {
                self.setValue(value, forKey: key)
            }
        }
    }
}
person.propertyList

可能重复的
// Display all class property list
address: String = ''
number: String = ''
houseNo: String = ''
licenceNo: String = ''