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 = ''