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
的声明。这个问题与强制铸造无关。问题是铸造到错误的类型。可能重复