这是我的代码:
func loadData() {
ref.child(currentUserID!).observe(.childAdded) {
(snapshot) in
let snapshotValue = try? snapshot.value as? [String: AnyObject]
if let item = try TableViewModel(id: snapshot.key, likeLabel: self.likeLabel, playLabelString: self.playLabelString, json: snapshotValue) {
self.items.append(item)
}
self.tableViewModel = self.items.reversed() as [TableViewModel]
}
}
我无法理解以下错误:
从投掷
(_) throws -> ()
类型的函数到非投掷函数类型(DataSnapshot) -> Void
的转换无效
在以下行中:
ref.child(currentUserID!).observe(.childAdded) {
请帮忙。
答案 0 :(得分:3)
您的主要问题是以下表达式:
if let item = try TableViewModel(...) {
try
命令表明您的Firebase完成关闭可能抛出错误,这是您传递闭包的observe
API不期望的情况,因此编译错误你正拥有的。
好的,尽管如此,我相信你有try?
操作符。如果是这样,请尝试这样做:
if let item = try? TableViewModel(...) {
或简单地说:
if let item = TableViewModel(...) {
如果TableViewModel
根本没有抛出任何错误(即它只是一个可用的初始化程序)。
顺便说一下,您的snapshotValue
变量也可以使用一些帮助:
let snapshotValue = snapshot.value as! [String: AnyObject]