带整数的Firebase'setValue'无法正常工作

时间:2019-11-16 09:25:37

标签: ios swift firebase-realtime-database

我正在将整数发送到我的数据库,应该被调用一次,但是被更新了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")
    }
}

0 个答案:

没有答案