我正在将整数发送到我的数据库,应该被调用一次,但是被更新了100倍。数据库很快就被填满,好像有无限循环一样。
如何在不重复循环的情况下调用setValue函数上载整数?有其他方法吗?
背景信息-我已经测试过字符串,并且它仅更新一次。我有Ran函数和其他信息很多次,并且工作正常,不包括整数。我建议您查看“ add()”函数。我认为其中存在错误。但是我列出了其他信息,以便您对我要尝试做的事情有所了解。
还有另一种方法可以做到吗?
这是我的代码:
import UIKit
import FirebaseDatabase
class HomeController: UIViewController {
// Variables
var databaseRefer : DatabaseReference!
var databaseHandle : DatabaseHandle!
var OldPoints : Int = 0
override func viewDidLoad() {
super.viewDidLoad()
// Functions To Throw
FirebaseSetup()
StartUp()
// Do any additional setup after loading the view, typically from a nib.
}
// Firebase Init ( Read )
func FirebaseSetup() {
databaseRefer = Database.database().reference()
}
// Transfers To Reward Menu File
@IBAction func ChooseRewardsTapped(_ sender: Any) {
let alert = UIAlertController(title: "QR Found!", message: "Add 20 Points?", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alert.addAction(UIAlertAction(title: "Add!", style: .default, handler: { (nil) in
let Name = UserDefaults.standard.object(forKey: "Name") as! String
self.databaseHandle = self.databaseRefer.child("Users").child(Name).child("PointsAndConesInfo").child("CurrentPoints").observe(.childAdded, with: { (data) in
let name = (data.value as? Int)! //line above not so necessary
print("\(String(name))")
self.OldPoints = name
print("\(String(self.OldPoints))")
self.add()
})
}))
self.present(alert, animated: true, completion: nil)
}
func add() {
let Name = UserDefaults.standard.object(forKey: "Name") as! String
let newNumber = self.OldPoints + 20
print("\(String(newNumber))")
self.databaseRefer.child("Users").child(Name).child("PointsAndConesInfo").child("CurrentPoints").childByAutoId().setValue(newNumber)
print("Added")
}
}