Reputation: 8118
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.
Upvotes: 1
Views: 2076
Reputation: 9945
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)
})
Upvotes: 1