【问题标题】:Initializer for conditional binding must have Optional type, not '[String : Any]'条件绑定的初始化程序必须具有 Optional 类型,而不是 '[String : Any]'
【发布时间】:2017-06-29 14:58:04
【问题描述】:

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

   `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]'

【问题讨论】:

  • as! 替换为as? (如下两行)。 – 顺便说一句,您的问题标题甚至与错误消息不匹配。

标签: swift swift3 alamofire optional-parameters


【解决方案1】:

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

改变这个:

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

到这里:

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

【讨论】:

  • 这些不起作用。给了我更多的构建错误。
  • [这是我在输入 ?][1] [1] 时遇到的构建错误:i.stack.imgur.com/tKnua.png
  • @ColinH 答案是正确的。这些新错误与原始问题无关。您的代码中有一堆语法错误(例如,它是 DateFormatter() 而不是 DateFormatter),您应该修复它们。
  • @ColinH 我的回答是针对条件绑定。从您的屏幕截图来看,您的代码方面似乎还有许多其他问题,而您并没有从您的问题中提出这些问题。
【解决方案2】:

该消息意味着您需要具有可选类型,因此只需更改

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-28
    • 2021-04-26
    • 2015-10-19
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多