错误:抛出类型'(_)抛出函数的转换无效 - > ()'到非投掷功能类型'(DataSnapshot) - >虚空'

时间:2017-06-16 23:20:45

标签: ios json swift firebase compiler-errors

这是我的代码:

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

请帮忙。

1 个答案:

答案 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]
相关问题