Swift 对带有数组的成员下标的引用不明确<;字典<;NSObject,AnyObject>&燃气轮机;

Swift 对带有数组的成员下标的引用不明确<;字典<;NSObject,AnyObject>&燃气轮机;,swift,Swift,我收到以下代码的“对成员下标的模糊引用”错误- let resultsDict = try JSONSerialization.jsonObject(with: data!, options: []) as! Dictionary<NSObject, AnyObject> let items: Array<Dictionary<NSObject, AnyObject>> = resultsDict["items"] as! Array<Dictiona

我收到以下代码的“对成员下标的模糊引用”错误-

let resultsDict = try JSONSerialization.jsonObject(with: data!, options: []) as! Dictionary<NSObject, AnyObject>

let items: Array<Dictionary<NSObject, AnyObject>> = resultsDict["items"] as! Array<Dictionary<NSObject, AnyObject>>

let resultsDict=try JSONSerialization.jsonObject(带有:data!,选项:[])as!字典
将items:Array=resultsDict[“items”]设为!排列

首先,我不会将
NSObject
json序列化一起使用,而是使用
[AnyHashable:Any]
[String:Any]
。其次,我建议您使用带括号的速记字典和数组语法。为了安全起见,我还建议使用带有if-let
的安全下载(
as?
),而不是强制下载(
as!

do {
    if let resultsDict = try JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any] {

        let items = resultsDict["items"] as? [[String : Any]]
        // use items
    }
} catch {
    // handle error
}

如何将resultsDictlet resultsDict=try JSONSerialization.jsonObject(带:data!,选项:[])声明为!字典是使用强制转换的问题之一。尝试将if-let-check添加到此步骤,您将发现它是否在字典中type@OlegGordiichuk如果阅读代码,您可以看到
resultsDict
的声明。这个问题与强制铸造无关。问题是铸造到错误的类型。可能重复