尝试将数据从UIPicker发送到Firebase数据库

问题描述 投票:0回答:1

所以我已经想出如何将文本字段数据发送到数据库,同时为每个客户的订单提供一个唯一的密钥,在下一个视图或下一个屏幕中,我需要限制客户的选择,所以我放置了文本字段而不是文本字段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()
    }

以下是我设置所有内容的所有代码,但是出现错误:

无法将类型'(Int) - > Int'的值转换为强制类型'Int'

此外,虽然我还没有尝试过,但是这个选择是否会与用户在上一个屏幕中输入的数据合并到数据库中?或者它会创建一个单独的条目。

ios swift firebase uipickerview
1个回答
2
投票

您的问题出在这一行:

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) ]
© www.soinside.com 2019 - 2024. All rights reserved.