类型'任何'在xcode 8中没有下标成员Swift 3

问题描述:

我的应用程序应该前往特定位置以下载需要加载的网站。在2.3中它像一个魅力一样工作,但因为我更新了xcode(我没有很多经验),它给了我错误“类型”任何'没有下标成员“,并突出显示”json“在第三行之前类型'任何'在xcode 8中没有下标成员Swift 3

...Retriever = json["WEB"]... 

这是与它相关的代码。

let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) 

     if let Retriever = json["WEB"] as? [[String: AnyObject]] { 

       for website in Retriever { 

        if let name = website["URL"] as? String { 

          self.loadAddressURL(name) 

我觉得我缺少一些小东西。如果有更好的方法来做到这一点,我会喜欢的建议。该URL返回此JSON

{ 
    "WEB" : [ 
      { 
      "URL" : "http://www.google.com" 
      }  
      ] 
} 

但我喜欢它,如果我可以简化它只是

{"URL":"http://www.google.com"} 

试试这个:

let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject] 

安全的方式:

do { 
    if let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as? [String:Any] { 
     print(json) 
    } 
} catch let err{ 
    print(err.localizedDescription) 
} 

您必须输入Any至Swift字典类型[String:AnyObject]

编辑:夫特3
在迅速3的AnyObject目的更明确。所以更有利的Swift Dictionary类型将是[String:Any]

Any是任何数据类型的别名。
AnyObject是任何派生自类的数据类型的别名。

欲了解更多信息,请访问:https://craiggrummitt.com/2016/09/16/any-vs-anyobject-vs-nsobject-in-swift-3/

+0

工作就像一个魅力,我不得不添加了“!”之后,但它像一个魅力 – DaVinci1223

+0

非常感谢:*你节省了我的头几小时 –

+2

这将是很好,如果有人可以添加更多有关这个答案的有价值的信息,因为它正在流行。 :) –