[英]How to access a variable using its name as a string
我当时在考虑使用plist文件配置如何将表单上载到服务器,但是后来我意识到我不知道该怎么做,甚至不可能做到这一点,因为您无法动态声明快速变数。
基本上我在想使用这样的字典
形成:
然后在我的表单上传方法中,我将执行如下所示的操作
formValues: [String:String] = [:]
form.forEach { (property_name, backend_name) in
let value = someController[property_name] // to do the equivalent of someController.property_name
formValues[backend_name] = value
}
// ...
formValues.forEach { (backend_name, value) in
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: backend_name)
}
问题是我不知道这部分
let value = someController[property_name]
您要解决的问题是为服务器序列化数据。 我不知道您尝试的方法在Swift中是否可行 ,但这绝对不是正确的方法。 如果您使用的是Swift 4,则可以创建Codable
模型对象,因此序列化将完全在Codable
进行。 否则,您很可能需要手动创建此[String: Any]
。
我发现我该怎么做。
formValues: [String:String] = [:]
form.forEach { (property_name, backend_name) in
let value = Mirror(reflecting: someController).children.filter({ (child) -> Bool in
return child.label == property_name
}).first!.value as! String
formValues[backend_name] = value
}
// ...
formValues.forEach { (backend_name, value) in
multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: backend_name)
}
我知道这是未优化的,因为我每个周期都重新创建了一个镜像,但这只是出于演示目的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.