繁体   English   中英

如何使用变量名称作为字符串访问变量

[英]How to access a variable using its name as a string

我当时在考虑使用plist文件配置如何将表单上载到服务器,但是后来我意识到我不知道该怎么做,甚至不可能做到这一点,因为您无法动态声明快速变数。

基本上我在想使用这样的字典

形成:

  • property_name:后端名称

然后在我的表单上传方法中,我将执行如下所示的操作

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]

使用Codable序列化/反序列化对象

我发现我该怎么做。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM