私のアプリでは、誰が勝つと思うチームで賭けをすることができます。彼らが賭けに行くときには、いくつかのことをデータベースにアップロードする必要があります。最初に賭けをしている人のユーザー名。これは(これは1ベット2ベット3ベット)であり、それはどのチームがベットするのかを示すはずです。firebaseデータベースの値をIntに変換
問題私は、誰かがユニークな賭けを持つように誰かが賭けをするたびに増分することができるように、賭けをIntに変えました。
以下私はテスト目的のためにコードが混乱しているので、私が説明するいくつかのことがあります。
viewDidLoadメソッド私は、ユーザー名と、誰かが何回行ったかを集める手段を持っています。データベースでは、これはデフォルトで文字列 "0"として扱われます。
は今self.betNumberは私が安全に、変数賭け
をグローバルにその値を宣言割り当てるbetNumberを取るとのIntにそれを回すsubmitData機能で、値「0」
を持つべきである賭けますその後、私は子供
としてデータベースに私は文字列にself.betsをキャストしようと、それそれの後に1 で賭けをインクリメントし、これは、私はエラーを取得する
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)!
}
}
}
}
です
、ここでfirebase構造は、それは、私が抽出していたデータは、「ユーザー」から来ていると私が書いていたデータはあなたのコードをザッと見てから、「ベット」
ええ、私は(usernamee)0.1は正しいことだと思う私のfirebase構造実際に素早く@ForestKunecke –
を投稿してみましょう。私は賭けが一意であるようにする必要があります –
@DevinTripp私はもう一度それを更新しました。 –