无法从天气 API 获取 JSON。 iOS

问题描述 投票:0回答:2

这是 JSON:

{ 
"main":{  
  "temp":-11.67,
  "pressure":1040.21,
  "humidity":73,
  "temp_min":-11.67,
  "temp_max":-11.67,
  "sea_level":1055.37,
  "grnd_level":1040.21
},
"id":3099213,
"name":"London",
"cod":200
}

我有 JSON 文件,我想获取

"name": "London" (London)
的值并将其保存在变量 cityName 中,但它不起作用,第
self.cityName = city
行中有错误。 无法将类型
[String : AnyObject]
的值分配给类型
String!

例如,下一个必须从 JSON 保存到不同程度的温度才能正确工作并显示温度。

我不知道如何选择这个

"name":"London"
值并将其保存到变量中。 当我修改并放置此内容时:
self.cityName = city as! String

我收到警告从

'[String : AnyObject]'
转换为不相关类型
'String'
总是失败:

var cityName: String!

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : AnyObject]
                
                
                if let main = json["main"] as? [String : AnyObject] {
                    if let temp = main["temp"] as? Int {
                        self.degree = temp
                    }
                }
                if let city = json["name"] as? [String : AnyObject] {
                    self.cityName = city
                }
}
ios json swift
2个回答
0
投票
  if let city = json["name"] as? [String : AnyObject] {
       self.cityName = city
  }

替换为

 if let city = json["name"] as? String {
       self.cityName = city
  }

0
投票

当前您正在尝试将

cityName
类型的
String
city
类型的
[String:AnyObject]
分配。在分配给
String
之前先转换为
cityName
,如下所示:

var cityName: String!

let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : Any]

if let main = json["main"] as? [String : Any],
    let temp = main["temp"] as? Int {
    self.degree = temp
}

if let city = json["name"] as? String {
    self.cityName = city
}

请注意,我还用

[String : AnyObject]
替换了
[String : Any]
,这是“任何”值类型的基于字符串的键值字典对象的 Swift 标准。我还通过在语句之间使用
if let
在一个条件中展开多个值来删除多余的
,
嵌套。

© www.soinside.com 2019 - 2024. All rights reserved.