新しいチャンネルが追加されたときに確認する監視ハンドルが追加されました。ユーザーがクリックするとチャンネルをリロードするボタンが付いたobserveSingleEventにしたい。 observeSingleEventは正しく動作しています。これはコードです:Firebaseでobserve to observeSingleEventに変換する際のエラー
private func observeChannels() {
channelRefHandle = channelRef.observe(.childAdded, with: { (snapshot) -> Void in
self.playersInChannnel.append("\(snapshot.childrenCount)")
let channelData = snapshot.value as! Dictionary<String, AnyObject>
let id = snapshot.key
if let name = channelData["name"] as! String!, name.characters.count > 0 {
self.channels.append(Channel(id: id, name: name))
self.tableView.reloadData()
} else {
print("Error! Could not decode channel data")
}
})
}
私は今observeSingleEventに変換しようとした、プリントがチャネルデータをデコードすることができませんでした、エラーを言っている置きます。これは私のコードです:
func reloadChannels()
{
channelRef.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
self.playersInChannnel.append("\(snapshot.childrenCount)")
let channelData = snapshot.value as! Dictionary<String, AnyObject>
let id = snapshot.key
if let name = channelData["name"] as! String!, name.characters.count > 0 {
self.channels.append(Channel(id: id, name: name))
self.tableView.reloadData()
} else {
print("Error! Could not decode channel data")
}
})
}
このコードで何が問題になっていますか?これはobserveSingleEventからのスナップショットのプリントです:
Snap (channels) {
"-Ke3g8tLH9A-_iTVjQhq" = {
"-Ke3g8tO2XPCbyIjP4Op" = {
PictureVersion = "";
userID = keVlTMUXyRViUsTVjTnKdvZs7mg1;
username = pietje;
};
name = test;
};
"-Ke3gFbijlcQGuJXe42L" = {
"-Ke3gFbjsEgpA3wjM1Jv" = {
PictureVersion = "";
userID = keVlTMUXyRViUsTVjTnKdvZs7mg1;
username = pietje;
};
name = test2;
};
}
Error! Could not decode channel data
また、observeChannels()はエラーを表示していません。ありがとうございました。
ありがとうございます。私はchannelSnapを追加する必要がありました! FIRDataSnapshotを有効にする – Petravd1994
ああ、ええと....私はスウィフトの呪文については決してわかりません。それを聞いてうれしいです。自分の答えを編集してコードスニペットを追加できますか?さもなければ私は間違った場所に置くでしょう。 –
それをしました!ありがとうございました :)。 – Petravd1994