2017-06-29 107 views
0

任何人都可以告诉我如何解决这个问题吗?我只是试图从事情发言接收信号。条件绑定的初始值设定项必须有可选类型,而不是'[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] { 

错误消息称“初始值设定条件结合必须有可选的类型,而不是‘[字符串:任何]’

+2

更换'的'的'的!? '(如你在下面2行)。 - 顺便说一句,你的问题标题甚至不符合错误消息。 –

回答

2

如果你想使用条件表达式的右侧应该是可选的。

更改此:

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

要这样:

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

这些不起作用。进一步向下给我几个构建错误。 –

+0

[继承人存在构建错误时,我把它放在?] [1] [1]:https://i.stack.imgur.com/tKnua.png –

+0

@ColinH答案是正确的。这些新错误与原始问题无关。代码中有一堆语法错误(例如'DateFormatter()'而不是'DateFormatter'),你应该修正它们。 –

0

该消息意味着,你需要有可选的类型,因此只要改变

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

if let json = response.result.value as? [String:Any] { 
相关问题