我试图在天气应用程序中解析json,但遇到了一个我无法通过的障碍。
我确实收到错误,“Type'int'不符合以下代码中的Protocol'StringLiteralConvertible'”。 香港专业教育学院尝试过铸造jsonResult [“main”],但确实给出了错误“postfix的操作数应具有可选类型,类型为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)
答案 0 :(得分:0)
如果您提供要尝试解析的JSON,这将更容易给出确定的答案,但您收到的错误消息是明确的。
该错误是因为您尝试使用字符串下标访问您声明为NSArray
实例的内容,在这一行中两次:
if let tempResult = ((jsonResult["main"] as NSArray)["temp"] as? Double)
jsonResult
被声明为NSArray
参数,然后您将jsonResult["main"]
投射到NSArray
,然后尝试使用["temp"]
下标它。这里的问题是NSArray
(和内置的Swift数组)只使用基于整数的下标。错误是说Swift编译器期望Int
,你提供了一个字符串文字。
要解决此问题,您需要进入两个方向之一。如果您尝试访问的结构实际上具有这些字符串键,那么在这两种情况下您应该使用NSDictionary
而不是NSArray
。如果没有,它是一个整数索引数组,你应该使用整数。