我正在将Swift 2项目转换为Swift3。现在,我使用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)?
我删除了该函数,并使用自动完成功能,再次编写了它,这是同样的问题。
最佳答案
只需将您的代码更改为:-
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)
})