Тип "Любой" Нет Подписчиков в 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"}
Ответы
Ответ 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/