Подтвердить что ты не робот

Тип "Любой" Нет Подписчиков в xcode 8 Swift 3

Мое приложение должно перейти в определенное место, чтобы вытащить веб-сайт, который нужно загрузить. В 2.3 он работал как шарм, но поскольку я обновил xcode (в котором у меня нет большого опыта), он дает мне ошибку "type" 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"}
4b9b3361

Ответ 1

Попробуйте следующее:

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
В быстрой 3 цель AnyObject уточняется. Таким образом, более подходящий тип Swift Dictionary будет [String:Any].

Any - это псевдоним для любого типа данных.
AnyObject - это псевдоним для любого типа данных, полученного из класса.

Для получения дополнительной информации посетите: https://craiggrummitt.com/2016/09/16/any-vs-anyobject-vs-nsobject-in-swift-3/