【发布时间】:2020-02-05 12:01:00
【问题描述】:
从网络请求接收到JSON 有效负载后,我需要将数据解析为NSObject 子类中的变量。
我的变量在对象中声明:
var name:String?
var email:String?
var aboutMe:String?
然后我开始解析JSON 可能返回的所有可能数据:
if let name = json["Name"] as? String
{
self.name = name
}
if let email = json["Email"] as? String
{
self.email = email
}
if let aboutMe = json["AboutMe"] as? String
{
self.aboutMe = aboutMe
}
这变得相当长,因为我们有很多数据。
我想通过使用包含JSON 键和variable 的Dictionary 来缩短它,如下所示:
let varMap:[String:Any?] = [
"Name": self.name,
"Email": self.email,
"AboutMe": self.aboutMe
]
然后像这样遍历它们:
for (key, var variable) in varMap
{
if let string = json[key]
{
variable = string
}
}
这里的问题是Dictionary从变量中复制值而不是指向它的指针,因此将其设置为新值对整个对象的变量没有影响。
有没有办法实现我正在尝试的目标?如果不是,还有什么其他模式比使用大量 if 语句更好?
【问题讨论】:
标签: json swift loops dictionary pointers