Я пытаюсь преобразовать свой проект в Swift 3 и продолжать получать эту ошибку. Я исправил все другие ошибки, кроме этого. Я видел, что у нескольких других людей были проблемы, но я новичок в JSON, поэтому я их не понимал. Любая помощь будет принята с благодарностью.Тип 'Any' не имеет подписчиков в Swift 3 Xcode 8
Вот мой код:
class func fetchPriceForSymbol(_ symbol: String, completion:@escaping (_ stock: StockPrice) ->()) {
DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default).async {
let url = URL(string: "http://finance.yahoo.com/webservice/v1/symbols/\(symbol)/quote?format=json")
let data = try? Data(contentsOf: url!)
do {
//let object = try JSONSerialization.jsonObject(with: data!, options: .allowFragments)
let object = try! JSONSerialization.jsonObject(with: data!)
if let dictionary = object as? [String: AnyObject] {
let title = object["list"] as! NSDictionary
let title2 = title["resources"] as AnyObject!
let title3 = title2[0] as AnyObject!
let title4 = title3["resource"] as AnyObject!
let fields = title4["fields"] as AnyObject!
let stockPrice = StockPrice (
price: fields["price"] as AnyObject! as! String
)
DispatchQueue.main.async {
completion(stock: stockPrice)
}
}
} catch {
// Handle Error
}
}
}
Можете вы добавить дерево данных JSON? Трудно сказать, как выглядит ваше дерево, просто глядя на ваш код. – eshirima
Вы используете 'object' после необязательной привязки, где он не указан (' Any'). Замените 'object' на' dictionary'. И используйте '[String: Any]', а не 'NSDictionary'. И превратить объекты в нечто более значимое, чем «AnyObject». – vadian
Укажите словарь, выполнив это let object = try! JSONSerialization.jsonObject (с: data!) Как? NSDictionary – AdamM