简体   繁体   中英

Cannot convert value of type to expected argument Firebase

I'm converting my Swift 2 project to Swift 3. Now I'm using Firebase for my data and I'm having this function:

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)
        }

This was fine in swift 2, but now in Swift 3, I get an error on the line in. The error is as follows:

Cannot convert value of type (AnyObject?) -> Void to expected argument type ((Error) -> Void)?

I deleted the function and with autocomplete, I wrote it again and it's the same problem.

Just change your code to :-

 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)        

    })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM