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

时间:2018-04-12 08:46:33

标签: 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类的变量。我在人类中有大约30个变量。

有没有简单的方法可以做到这一点?

就像我所有的密钥来自后端,如“number = 123456”。是不是有办法运行for循环并使用类似的东西。

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

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

2 个答案:

答案 0 :(得分:1)

您可以试用此代码

StartDate

您的课程,设置价值如下代码有用

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)'")
        }
    }
}
  

person.propertyList()

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)
            }
        }
    }
}

答案 1 :(得分:0)

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

有些人喜欢这样:

let jone = Person()
jone.loadDataFrom(response)

或使用Person静态方法

let jone = Person.loadDataFrom(response)

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

    return p

}