У меня возникли проблемы с увеличением количества данных в 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
На самом деле, извините, я полностью не реализовал ваш код. В чем разница между функцией наблюденияSingleEventOfType и observEventType? Когда я должен использовать? – user5812721
observSingleEventOfType считывает узел один раз, тогда как observEventType присоединяет наблюдателя к этому узлу. Он уведомляет приложение один раз, а затем постоянно отслеживает изменения (добавляет, изменяет, удаляет) и уведомляет приложение об этих изменениях, когда они происходят. Подробнее см. В руководстве Firebase [Получить данные] (https://firebase.google.com/docs/database/ios/retrieve-data). Как правило, если вы просто хотите получить кусочек данных и не нуждаетесь в том, чтобы узнать, изменилось ли оно, используйте функцию observSingleEventOfType, как в этом случае использования. Если вы хотите узнать об изменениях, например, в приложении типа чата, используйте функцию registerEventType – Jay