【问题标题】:Cannot convert value of type to expected argument Firebase无法将类型的值转换为预期的参数 Firebase
【发布时间】:2016-10-12 16:28:11
【问题描述】:

我正在将我的 Swift 2 项目转换为 Swift 3。现在我正在使用 Firebase 来处理我的数据并且我拥有这个功能:

self.ref.child("languages").observeSingleEvent(of: .value, with: { (snapshot) in
            let languages = snapshot.value as! [String : AnyObject]
            var languageList = [Language]()
            for (key, value) in languages {
                let tempLanguage = Language()
                tempLanguage.objectId = key
                tempLanguage.code = value["code"] as! String
                tempLanguage.desc = value["fulldesc"] as! String
                languageList.append(tempLanguage)
            }
            handler(success: languageList, failure: nil)
        }) { (error) in
            handler(nil, error)
        }

这在 swift 2 中很好,但现在在 Swift 3 中,我在输入的行上出现错误。错误如下:

无法将类型的值 (AnyObject?) -> Void 转换为预期的参数类型 ((Error) -> Void)?

我删除了这个函数,用自动完成,我又写了一遍,还是同样的问题。

【问题讨论】:

    标签: ios firebase firebase-realtime-database swift3


    【解决方案1】:

    只需将您的代码更改为:-

     FIRDatabase.database().reference().child("languages").observeSingleEvent(of: .value, with: { (snapshot) in
    
            let languages = snapshot.value as! [String : AnyObject]
            var languageList = [Language]()
            for (key, value) in languages {
                let tempLanguage = Language()
                tempLanguage.objectId = key
                tempLanguage.code = value["code"] as! String
                tempLanguage.desc = value["fulldesc"] as! String
                languageList.append(tempLanguage)
            }
            handler(success: languageList, failure: nil)
    
            }, withCancel: {(error) in
    
              handler(nil, error)        
    
        })
    

    【讨论】:

    • 你是对的。问题是处理程序。错误对象不再是 AnyObject 类型,而只是 Any。
    猜你喜欢
    • 2016-03-21
    • 2016-07-27
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 2020-03-01
    相关资源
    最近更新 更多