错误:从抛型的功能转换无效 '(_)抛出 - >()' 非抛函数型 '(DataSnapshot) - >无效'
问题描述:
这里是我的代码:错误:从抛型的功能转换无效 '(_)抛出 - >()' 非抛函数型 '(DataSnapshot) - >无效'
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]
}
}
我可以”吨得到我的头围绕以下错误:
以下行Invalid conversion from throwing function of type
(_) throws ->()
to non-throwing function type(DataSnapshot) -> Void
:
ref.child(currentUserID!).observe(.childAdded) {
请帮助。
答
你的主要问题是下面的表达式:
if let item = try TableViewModel(...) {
的try
命令指示你的火力地堡完成关闭可能抛出一个错误,而不是由你通过你的闭合到observe
API预期的情况,因此,编译错误你有。
好吧,那样的话,我相信你有try?
操作员的想法。如果是的话,试试这个来代替:
if let item = try? TableViewModel(...) {
或者干脆:
if let item = TableViewModel(...) {
如果TableViewModel
不扔在所有的任何错误(即它只是一个failable初始化代替)。
顺便说一句,你snapshotValue
变量时,也可以使用一些帮助:
let snapshotValue = snapshot.value as! [String: AnyObject]
感谢。我在'TableViewModel'上试验了'throws'运算符,但是我将它们全部改为'if let',而且一切看起来都很流畅。 – waseefakhtar