ios - 类型 'Any' 在 xcode 8 Swift 3 中没有下标成员

标签 ios json swift swift3 xcode8

我的应用程序应该去一个特定的位置来拉下它需要加载的网站。在 2.3 中它就像一个魅力,但由于我更新了 xcode(我没有大量经验)它给了我错误“类型'Any'没有下标成员”并突出显示“json”就在第三行之前

...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]

编辑:Swift 3
在 swift 3 中,AnyObject 的目的更加明确。所以更有利的 Swift 字典类型将是 [String:Any]

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

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

关于ios - 类型 'Any' 在 xcode 8 Swift 3 中没有下标成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516199/

相关文章:

ios - 用于在网络服务器上签署 PDF 并对其进行分类的应用程序

ios - 具有三种不同 WebView 的 iPad App?

c# - 使用c#以json格式保存数据

json - 序列化程序中的格式验证错误

xcode - 如何在 Xcode 6 上运行 Xcode 7 playground?

ios - Appium 医生显示错误

ios - 应用程序如何从苹果商店获取更新?

javascript - Photoshop 脚本数组到 json

ios - 确定触摸点属于哪个矩形

ios - 如何在后台从配套 watch 应用程序启动主 iOS 应用程序?