条件绑定的初始化程序必须具有可选类型,而不是“[String:Any]”

0 optional-parameters swift alamofire swift3

谁能告诉我如何解决这个问题?我只是想接收来自说话事物的信号。

\n\n
   `self.title = "Home"\n    print("Requesting data...")\n    Alamofire.request( "https://api.thingspeak.com/channels/290427/feeds.json", parameters: ["results": "1", "location": "false"]) // Gets the latest info from ThingSpeak\n        .responseJSON { response in\n\n            print("Data downloaded: \\(response.result)")\n            if let json = response.result.value as! [String:Any] {\n                print(json) //see full data\n\n                if let feeds = json["feeds"] as? [String: Any] {\n\n                    for feed in feeds {\n                        print(feed["field2"])\n                        if let temperatureStr = feed["field2"] as? String, let dateStr = feed["created_at"] as? String {\n                            if let temperature = Double(temperatureStr){\n                                self.label.text = "Temperature: \\(temperature)\xc2\xb0F" //Displays last updated data entry\n\n                            }\n
Run Code Online (Sandbox Code Playgroud)\n\n

错误在行中

\n\n
if let json = response.result.value as! [String:Any] {\n
Run Code Online (Sandbox Code Playgroud)\n\n

错误消息显示“条件绑定的初始化程序必须具有可选类型,而不是 \'[String : Any]\'

\n

bri*_*ple 5

如果您想使用条件绑定,则表达式的右侧应该是可选的。

改变这个:

if let json = response.result.value as! [String:Any]
Run Code Online (Sandbox Code Playgroud)

对此:

if let json = response.result.value as? [String:Any]
Run Code Online (Sandbox Code Playgroud)