我目前正在用SWIFT2.0开发我的第一个iOS应用程序。我得到了以下错误:
'NSArray?' is not convertible to 'NSArray?'在这一行:
if let results: NSArray = jsonResult["results"] as? NSArray{完整代码片段:
do{
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
if let results: NSArray = jsonResult["results"] as? NSArray{
dispatch_async(dispatch_get_main_queue(), {
self.tableData = results
self.appsTableView!.reloadData()
})
}
}catch let error as NSError{
print(error)
}有人能告诉我我在这里做错了什么吗?
编辑:
我的全部功能:http://i.imgur.com/fCS73LF.png
发布于 2015-06-26 14:30:04
您将编译器与太多(多余的)类型注释混淆在一起。
// tested in Playground
if let results = jsonResult["results"] as? NSArray {
// do something with results
}确保您也保持了完整的间隔。
为了完整起见,下面是我如何设置jsonResult的方法。jsonResult本身是否是可选的问题与您的错误消息无关。
let jsonResult = NSDictionary(dictionary: ["results" : [1,2,3,4,5]])编辑:具有try catch语法的Swift 2版本
var originalDictionary = NSDictionary(dictionary: ["results" : [1,2,3,4,5]])
do {
let data = try NSJSONSerialization.dataWithJSONObject(originalDictionary, options: NSJSONWritingOptions())
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions()) as? NSDictionary
if let results = jsonResult!["results"] as? NSArray {
for x in (results as! [Int]) {
print("\(x)")
}
}
}
catch let error as NSError {
print(error.description)
}
catch {
print("no clue what went wrong")
}https://stackoverflow.com/questions/31075481
复制相似问题