我有一个像
这样的课程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]
}
有没有办法缩短这个冗长的程序?
答案 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
}