我在json下面,我希望从这个数组中返回第三个值:
{
1: 2,
2: 33,
3: 7,
4: 0,
5: 25,
6: 8,
7: 66
}
我使用下面的代码获取值:
var eee = Double() //public
var dictionary=[String:AnyObject]() //public
func SendData_ThisWeek(id:String) {
let url = Property._URL+"ThisWeek/"+id
Alamofire.request(url).responseJSON { response in
if let data = response.data {
let json = String(data: data, encoding: String.Encoding.nonLossyASCII)
let jsonData = try? JSONSerialization.jsonObject(with: data, options: [])
guard dictionary == (jsonData as? [String:AnyObject])! else { return }
self.eee=dictionary["3"] as! Double
}
}
我的问题是什么?
答案 0 :(得分:2)
不要混淆平等==
和作业=
运算符。
你不想检查字典是否相等,你想要可选的绑定(分配)字典
顺便说一下,在Swift 3+中,JSON字典是[String:Any]
。
guard let dictionary = jsonData as? [String:Any] else { return }
答案 1 :(得分:0)
简要回顾:operator == comapares符合Equatable协议的东西。运算符 === 比较两个对象的引用(即它们指向同一块内存)。 是检查变量的类型。 as?尝试将变量a返回nil,如果它失败而为!是强制转换。
如果你想将字典用作[String:AnyObject],那么你应该使用:
guard let json as? [String: AnyObject] else { return }
dictionary = json