Alamofire.request(videosUrl!).responseJSON { response in
if response.result.value != nil {
let json = response.data
do {
let readableJSON = try JSONSerialization.jsonObject(with: json!, options: .mutableContainers) as? JSONStandard
if let items = readableJSON {
for i in 0..<items.count {
let item = items[i] <<< ERROR HERE
...REST OF CODE HERE
}
}
} catch {
print(error)
}
}
}
我也有一个类型设置:
typealias JSONStandard = [String:AnyObject]
我的问题是为什么我得到了对成员下标&#39;模糊的引用?错误?我所要做的就是访问数组的正确部分。
答案 0 :(得分:0)
发生错误,因为Dictionary
(您的JSONStandard
)的下标方法要求:
1)String
作为关键参数,但您传递的i
类型为Int
。根据示例,您的代码基于您可能应该替换
if let items = readableJSON {
...
}
与
if let tracks = readableJSON["tracks"] as? JSONStandard {
if let items = tracks["items"] as? [JSONStandard] {
...
}
}
在这种情况下,items
成为Array
,在下标方法中使用Int
索引。
2)或因为Dictionary
也是索引类型为DictionaryIndex<Key, Value>
的集合,下标也可以DictionaryIndex<String, AnyObject>
。在您的情况下,您可以替换
for i in 0..<items.count {
与
for i in items.indices {
甚至
for (_, item) in items {
您选择的解决方案取决于 JSON
的结构