gpt4 book ai didi

swift - Firebase 未存储在 UIPickerView 中选择的正确值

转载 作者:行者123 更新时间:2023-11-28 15:35:38 25 4
gpt4 key购买 nike

我的 UIPickerView 有问题。我的代码当前采用选择器选择的行并将其存储在 Firebase 中。但是,我注意到记录到 Firebase 中的值与在我的应用程序模拟器的选择器 View 中选择的值不同。更具体地说,该值将始终比我在选择器 View 中的预期值高出或低于几行。我的代码如下:

import UIKit
import Firebase
import FirebaseAuth

class DormViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var dormName: UIPickerView!
@IBOutlet weak var entryway: UIPickerView!
@IBOutlet weak var roomNumber: UIPickerView!
@IBOutlet weak var nextButton: UIButton!

var ref: DatabaseReference!

var dorm = ""
var entry = ""
var num = ""

let dorms = ["Adams", "Apley", "Cabot", "Canaday", "Currier", "DeWolfe 10", "Dewolfe 20", "Dunster", "Eliot", "Fairfax", "Grays", "Greenough", "Hollis", "Holworthy", "Hurlbut", "Inn at Harvard", "Kirkland", "Leverett Towers", "Leverett McKinlock Hall", "Lionel", "Lowell", "Massachusetts Hall", "Mather Lowrise", "Mather Tower", "Matthews", "Mower", "New Quincy", "Pennypacker", "Pforzheimer", "Pforzheimer Jordan North", "Pforzheimer Jordan South", "Prescott", "Stone Hall", "Stoughton", "Straus", "Thayer", "Weld", "Wigglesworth", "Winthrop" ]

let entrances = ["N/A", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

let rooms = ["N/A", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"]

override func viewDidLoad() {
super.viewDidLoad()

ref = Database.database().reference()

dormName.tag = 0
entryway.tag = 1
roomNumber.tag = 2

// Do any additional setup after loading the view.
}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 0 {
dorm = dorms[row]
return dorm
}
else if pickerView.tag == 1 {
entry = entrances[row]
return entry
}
else {
num = rooms[row]
return num
}
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 0 {
return dorms.count
}
else if pickerView.tag == 1 {
return entrances.count
}
else {
return rooms.count
}
}


@IBAction func nextButton(_ sender: Any) {
let user = Auth.auth().currentUser
if user != nil {
self.ref.child("Users").child((user?.uid)!).updateChildValues(["Location": dorm + " " + entry + "-" + num])
performSegue(withIdentifier: "tohomepage", sender: self)
}
else {
print("error")
}
}

例如,如果我打算选择 Adams A-3,Firebase 可能会将我的选择注册为 Cabot D-7。这是我的 Storyboard的屏幕截图以供澄清:

[![截图][1]][1]

还有我的 Firebase 的截图:

enter image description here

请告诉我为什么我的选择器 View 没有注册我选择的值。谢谢!

最佳答案

我认为您错过了存储所选值的选择器的委托(delegate)方法。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 0 {
dorm = dorms[row]
}
else if pickerView.tag == 1 {
entry = entrances[row]
}
else {
num = rooms[row]
}
}

关于swift - Firebase 未存储在 UIPickerView 中选择的正确值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44320866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com