尝试将数据从 UIPicker 发送到 Firebase 数据库
Attempting to send data from a UIPicker to Firebase Database
所以我想出了如何将文本字段数据发送到数据库,同时为每个客户的订单提供一个唯一的键,在下一个视图或下一个屏幕中,我需要限制客户所做的选择,所以我改为放置文本字段的 UIPicker 具有各种选项。我需要客户选择的选项也出现在我的数据库中,使用与上一屏幕中使用的密钥相同的密钥。
class flavorViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var customerInfo: FIRDatabaseReference!
@IBOutlet weak var flavorPicker: UIPickerView!
var flavors: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
FIRApp.configure()
customerInfo = FIRDatabase.database().reference().child("Customer Info");
self.flavorPicker.dataSource = self
self.flavorPicker.delegate = self
//List Picker Data Here
flavors = ["Double Apple", "Watermelon Mint", "Blueberry Mint", "Grape Mint", "Geisha", "Sex on the Beach"]
}
// The number of columns of data
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return flavors.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return flavors[row]
}
func flavorselected() {
let key = customerInfo.childByAutoId().key
let flavor = ["id": key,"flavor selected": flavorPicker.selectedRow as Int ]
}
@IBAction func checkoutButton(_ sender: Any) {
flavorselected()
}
这是我设置所有内容的所有代码,但是我收到错误消息:
Cannot convert value of type '(Int) -> Int' to type 'Int' in coercion
此外,虽然我还没有尝试过,但这个选择是否会与用户在前一屏幕中输入数据库的数据合并?或者它会创建一个单独的条目。
您的问题在这一行:
let flavor = ["id": key,"flavor selected": flavorPicker.selectedRow as Int ]
它是由以下原因引起的:
flavorPicker.selectedRow as Int
selectedRow
是一个带有 Int
参数的函数。您需要将其更改为:
let flavor: [String: Any] = ["id": key,"flavor selected": flavorPicker.selectedRow(inComponent: 0) ]
所以我想出了如何将文本字段数据发送到数据库,同时为每个客户的订单提供一个唯一的键,在下一个视图或下一个屏幕中,我需要限制客户所做的选择,所以我改为放置文本字段的 UIPicker 具有各种选项。我需要客户选择的选项也出现在我的数据库中,使用与上一屏幕中使用的密钥相同的密钥。
class flavorViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var customerInfo: FIRDatabaseReference!
@IBOutlet weak var flavorPicker: UIPickerView!
var flavors: [String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
FIRApp.configure()
customerInfo = FIRDatabase.database().reference().child("Customer Info");
self.flavorPicker.dataSource = self
self.flavorPicker.delegate = self
//List Picker Data Here
flavors = ["Double Apple", "Watermelon Mint", "Blueberry Mint", "Grape Mint", "Geisha", "Sex on the Beach"]
}
// The number of columns of data
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// The number of rows of data
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return flavors.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return flavors[row]
}
func flavorselected() {
let key = customerInfo.childByAutoId().key
let flavor = ["id": key,"flavor selected": flavorPicker.selectedRow as Int ]
}
@IBAction func checkoutButton(_ sender: Any) {
flavorselected()
}
这是我设置所有内容的所有代码,但是我收到错误消息:
Cannot convert value of type '(Int) -> Int' to type 'Int' in coercion
此外,虽然我还没有尝试过,但这个选择是否会与用户在前一屏幕中输入数据库的数据合并?或者它会创建一个单独的条目。
您的问题在这一行:
let flavor = ["id": key,"flavor selected": flavorPicker.selectedRow as Int ]
它是由以下原因引起的:
flavorPicker.selectedRow as Int
selectedRow
是一个带有 Int
参数的函数。您需要将其更改为:
let flavor: [String: Any] = ["id": key,"flavor selected": flavorPicker.selectedRow(inComponent: 0) ]