【发布时间】:2014-07-24 10:42:43
【问题描述】:
我正在使用返回 JSON 的 API,如下所示
{
"boards":[
{
"attribute":"value1"
},
{
"attribute":"value2"
},
{
"attribute":"value3",
},
{
"attribute":"value4",
},
{
"attribute":"value5",
},
{
"attribute":"value6",
}
]
}
在 Swift 中,我使用两个函数来获取并解析 JSON
func getJSON(urlToRequest: String) -> NSData{
return NSData(contentsOfURL: NSURL(string: urlToRequest))
}
func parseJSON(inputData: NSData) -> NSDictionary{
var error: NSError?
var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
return boardsDictionary
}
然后我用它来调用它
var parsedJSON = parseJSON(getJSON("link-to-API"))
JSON 解析良好。当我打印出来
println(parsedJSON["boards"])
我得到了数组的所有内容。但是我无法访问每个单独的索引。我很肯定它是一个数组,因为我这样做了
parsedJSON["boards"].count
返回正确的长度。但是,如果我尝试使用
访问各个索引parsedJSON["boards"][0]
XCode 关闭语法高亮并给我这个:
并且代码不会编译。
这是 XCode 6 的错误,还是我做错了什么?
【问题讨论】:
-
parsedJSON["boards"][0] 肯定是objective-c文字,但它也是快速语法吗?不确定(但我想是的)
-
此时似乎有几个与字典数组相关的错误。我目前也在努力反对它。
-
如果解析出错并返回 nil,您的 parseJson 函数将崩溃。 “as NSDictionary”是罪魁祸首。有关如何使用 NSJSONSerialization 解析 JSON 的正确语法,请参阅我的答案:stackoverflow.com/a/24333999/1687195
-
Xcode 在奇怪的时候崩溃,可能不是你的代码。