我试图在天气应用程序中解析 json,但遇到了一个我无法克服的障碍。
我确实在以下代码中收到错误“类型‘int’不符合协议‘StringLiteralConvertible’”。
我尝试过转换 jsonResult["main"] ,但这确实给出了错误“后缀的操作数应该具有可选类型,类型是 AnyObject”。我是否需要以某种方式向下转换数组,如果需要,我应该如何做?
我对此进行了很多搜索,但在其他帖子中找不到任何帮助。代码如下。
func updateWeatherInfo(latitude: CLLocationDegrees, longitude: CLLocationDegrees) {
Alamofire.request(.GET, AlongRequest)
.responseJSON { (_, _, JSON, error) in
println(JSON)
self.updateUISuccess(JSON as NSArray!)
}
}
func updateUISuccess(jsonResult: NSArray) {
self.loading.text = nil
self.loadingIndicator.hidden = true
self.loadingIndicator.stopAnimating()
if let tempResult = ((jsonResult["main"] as NSArray)["temp"] as? Double)
如果您提供要尝试解析的 JSON,那么给出明确的答案会更容易,但您收到的错误消息很明确。
该错误是因为您试图访问您声明为NSArray
带有字符串下标的实例,在这一行中出现两次:
if let tempResult = ((jsonResult["main"] as NSArray)["temp"] as? Double)
jsonResult
被声明为NSArray
参数,然后你正在铸造jsonResult["main"]
to NSArray
在尝试使用下标之前["temp"]
。这里的问题是NSArray
(以及内置 Swift 数组)仅使用基于整数的下标。该错误表明 Swift 编译器期望出现Int
,您提供了一个字符串文字。
要解决此问题,您需要朝两个方向之一进行。如果您尝试访问的结构实际上具有这些字符串键,那么您应该使用NSDictionary
代替NSArray
在这两种情况下。如果不是,并且它是一个整数索引数组,那么您应该使用整数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)