Firebaseのデータを増分する際に問題があります。Firebaseのデータポイントをインクリメントする最も簡単な方法は?
Firebase {
clickedCounter: 0
}
これは私のコードです:
@IBAction func plus(sender: UIButton) {
FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap: FIRDataSnapshot) in
let value = FIRDatabase.database().reference().child("clickedCounter") as? NSNumber
let increment = ((value?.intValue)! + ((1 as? NSNumber)?.intValue)!) as? NSNumber
FIRDatabase.database().reference().child("clickedCounter").setValue()
self.clickLabel.text = snap.value?.description as String!
}
}
私も試してみました:
@IBAction func plus(sender: UIButton) {
FIRDatabase.database().reference().child("clickedCounter").observeEventType(.Value) { (snap: FIRDataSnapshot) in
FIRDatabase.database().reference().child("clickedCounter").setValue((snap.value?.description)! + 1)
self.clickedLabel.text = snap.value?.description as! String!
}
}
私の最初の私の警告がある場合:
Cast from Int32 to NSNumber always fails
Conditional cast from NSNumber to NSNumber always succeeds
Cast from FIRDatabaseReference to NSNumber always fails
私はそれを実行した後、私はlet increment....
にエラーが発生しました:Thread 1: EXC_BAD_INSTRUCTION
私の第二の誤差がある場合:
Binary operator + cannot be applied to operands of the type String and Int
私は混乱していますどのように私の
snap.value?.description
が私がFirebaseでそれをInt。いつも何かが成功すると警告が表示されるのはなぜですか?
これを行うより良い方法はありますか?
ありがとう!
で答えを更新しました。これはうまくいきます、ありがとうございます。しかしもう1つの質問。私がプラスをクリックすると、アクションは実行され続け、何度も何度も何度も何度も繰り返します。あなたは修正を知っていますか? – user5812721
実際、あなたのコードを完全に実装していないのは申し訳ありません。 observeSingleEventOfTypeとobserveEventTypeの違いは何ですか?どちらを使うべきですか? – user5812721
observeSingleEventOfTypeはノードを一度読み込み、observeEventTypeはオブザーバーをそのノードに関連付けます。アプリケーションに一度通知した後、変更を継続的に監視(追加、変更、削除)し、変更が発生したときにアプリケーションに通知します。詳細は、Firebaseのガイド[データの取り込み](https://firebase.google.com/docs/database/ios/retrieve-data)を参照してください。一般に、データがほしいだけで、変更があるかどうかを知る必要がない場合は、このユースケースのようにobserveSingleEventOfTypeを使用します。チャットタイプのアプリケーションのような変更について知りたい場合は、observeEventTypeを使用してください – Jay