2017-06-16 10 views
1

は、ここに私のコードです:「私ができるエラー:型の機能を投げるから無効な変換 '(_)がスローされます - >()' 非投げ関数型に '(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) { 

助けてください。

答えて

2

あなたの主な問題は、次の式である:tryコマンドはFirebase完了閉鎖したがって、あなたがあなたの閉鎖を渡しているobserve APIによって期待できない状況にエラーをスローする可能性があります示し

if let item = try TableViewModel(...) { 

コンパイルエラーが発生しています。

私はあなたが念頭に置いてtry?オペレータを持っていたことを信じています。もしそうなら、代わりにこれを試してみてください。

if let item = try? TableViewModel(...) { 

または単純に:

if let item = TableViewModel(...) { 

TableViewModelは(すなわち、それだけではなく、failable初期化子です)まったくエラーをスローしない場合。

let snapshotValue = snapshot.value as! [String: AnyObject] 
+0

ありがとう:ところで

は、あなたのsnapshotValue変数もいくつかの助けを使用することができます。私は 'TableViewModel'で' throws'演算子を試していましたが、 'let 'の代わりにすべてを変更して、すべてが滑らかに走っているようです。 – waseefakhtar

関連する問題