verwandeln In meiner App können Leute Wetten auf welche Mannschaft sie denken, wird gewinnen. Wenn sie eine Wette abschließen, sollten einige Dinge in die Datenbank hochgeladen werden. Zuerst der Benutzername der Person, die den Einsatz tätigt. Welche Wette ist das (ist es eine Wette, zwei Wetten drei) und es sollte zeigen, für welche Mannschaft die Wette ist.einen Firebase-Datenbank-Wert in einen Int
Das Problem Ich habe die Wette in eine Int, so dass ich es jedes Mal erhöhen kann, wenn jemand eine Wette macht, so dass sie eine einzigartige Wette haben.
unten Ich habe ein paar Dinge, die ich erklären werde, weil mein Code im Moment aufgrund von Testzwecken durcheinander ist.
in der ViewDidLoad Methode Ich habe die Mittel, um den Benutzernamen und wie viele Wetten, die jemand gemacht hat, zu sammeln. In der Datenbank ist dies standardmäßig eine Zeichenfolge "0".
Wette jetzt self.betNumber sollte den Wert „0“
dann in der submitData Funktion habe ich sicher die betNumber nehmen und es in ein Int drehen dann zuordnen, diesen Wert auf die global deklarierte Variable Wetten
dann erhöhen I Wetten von 1 nach, dass ich versuchen self.bets in einen String und aber in die Datenbank zu werfen als Kind
und das ist, wo ich einen Fehler
import UIKit
import Foundation
import Firebase
class addBets: UIViewController {
let betRef = FIRDatabase.database().reference(fromURL: "not showing these sorry")
let userRef = FIRDatabase.database().reference(fromURL: "")
let ref = FIRDatabase.database().reference(fromURL: "")
let currentUser = FIRAuth.auth()?.currentUser
@IBOutlet weak var teamOneLabelAdd: UILabel!
@IBOutlet weak var teamTwoLabelAdd: UILabel!
@IBOutlet weak var teamOneBet: UITextField!
@IBOutlet weak var teamTwoBet: UITextField!
var userName: String!
var teamOne: String!
var teamTwo = String()
var betNumber: String!
var bets: Int = 0
var teamOneBetAnotherOne: String!
var teamOneBetAnotherTwo: String!
override func viewDidLoad() {
super.viewDidLoad()
teamOneLabelAdd.text = teamOne
teamTwoLabelAdd.text = teamTwo
//Looks for single or multiple taps.
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
//Uncomment the line below if you want the tap not not interfere and cancel other interactions.
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
//self.teamOneBet.delegate = self
//self.teamTwoBet.delegate = self
let userID = FIRAuth.auth()?.currentUser?.uid
ref.child("User").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let username = value?["username"] as? String ?? ""
self.userName = username
let betnumber = value?["bets"] as? String ?? ""
self.betNumber = betnumber
// ...
}) { (error) in
print(error.localizedDescription)
}
}
func textFieldShouldReturn(userText: UITextField!) -> Bool {
teamOneBet.resignFirstResponder()
teamTwoBet.resignFirstResponder()
return true
}
func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
@IBAction func submitData(_ sender: Any) {
// get the userName to tell who is doing the bet and set it as a key
sleep(4)
if let usernamee = self.userName {
if let anotherBet = self.betNumber as? Int {
self.bets = anotherBet
}
self.bets += 1
let usableBets = self.bets as? String ?? ""
let useRef = self.ref.child("Bets").child(usernamee).child(self.bets as? String ?? "")
var values = ["Username": usernamee,"Bet": "0", "ForTeam": ""]
if let betOne = self.teamOneBet.text{
if betOne == "" {
} else {
values["Bet"] = betOne
values["ForTeam"] = teamOneLabelAdd.text
}
}
if let betTwo = self.teamTwoBet.text{
if betTwo == "" {
} else {
values["Bet"] = betTwo
values["ForTeam"] = teamTwoLabelAdd.text
}
}
//self.betRef.child("Bets").setValue(self.userName)
if let worked = currentUser?.getTokenWithCompletion() {
useRef.setValue(values)
/*
useRef.updateChildValues(values, withCompletionBlock: { (error, ref) in
if (error != nil) {
print(error!)
return
}
})
*/
}
self.navigationController?.popViewController(animated: true)
}
}
func getUserName() {
let userID = FIRAuth.auth()?.currentUser?.uid
ref.child("User").child(userID!).observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let username = value?["username"] as? String ?? ""
self.userName = username
// ...
}) { (error) in
print(error.localizedDescription)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//let indexPath = self.tableView.indexPathForSelectedRow!
//var DestViewController : addBets = segue.destination as! addBets
//DestViewController.teamOne = self.teamOne.text!
//DestViewController.teamOne = self.teamTTwo
if segue.identifier == "gotobetview" {
if let destination = segue.destination as? BetView {
//destination.userNames = self.teamOne.text! as? String
//destination.teamTwo = (self.teamTwo.text! as? String)!
}
}
}
}
erhalten
und hier ist die Feuerbasis Struktur der Daten, die ich aus dem „User“ kommt am extrahieren und die Daten, die ich zum Schreiben bin, ist „Wetten“
lassen Sie mir meine Feuerbasis Struktur ganz schnell @ForestKunecke Post –
ja, ich denke, das (usernamee) .1 wäre richtig. Ich brauche nur jede Wette, um einzigartig zu sein –
@DevinTripp Ich habe es noch einmal aktualisiert, versuchen Sie es. –