Инициализатор для условного связывания должен иметь необязательный тип, а не '[String: Any]'

Может кто-нибудь сказать мне, как это исправить? Я просто пытаюсь получить сигналы от разговора.

   `self.title = "Home"
    print("Requesting data...")
    Alamofire.request( "https://api.thingspeak.com/channels/290427/feeds.json", parameters: ["results": "1", "location": "false"]) // Gets the latest info from ThingSpeak
        .responseJSON { response in

            print("Data downloaded: \(response.result)")
            if let json = response.result.value as! [String:Any] {
                print(json) //see full data

                if let feeds = json["feeds"] as? [String: Any] {

                    for feed in feeds {
                        print(feed["field2"])
                        if let temperatureStr = feed["field2"] as? String, let dateStr = feed["created_at"] as? String {
                            if let temperature = Double(temperatureStr){
                                self.label.text = "Temperature: \(temperature)°F" //Displays last updated data entry

                            }

Ошибка в строке

if let json = response.result.value as! [String:Any] {

Сообщение об ошибке гласит: "Инициализатор для условного связывания должен иметь необязательный тип, а не" [String: Any] "

2 ответа

Если вы хотите использовать условное связывание, правая часть выражения должна быть необязательной.

Изменить это:

if let json = response.result.value as! [String:Any]

К этому:

if let json = response.result.value as? [String:Any]

Это сообщение означает, что вам нужно иметь необязательный тип, поэтому просто измените

if let json = response.result.value as! [String:Any] {
в

if let json = response.result.value as? [String:Any] {
Другие вопросы по тегам