我正在使用一个API,该API返回如下所示的JSON
{ "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的错误,还是我做错了什么?
Swift中的字典访问返回一个Optional,因此您需要强制该值(或使用if let语法)来使用它。
if let
这有效: parsedJSON["boards"]![0]
parsedJSON["boards"]![0]
(不过,它可能不会使Xcode崩溃)