Firebase Swift调用中的额外参数“数据”

时间:2019-12-24 11:16:04

标签: ios swift firebase uitableview dictionary

需要有关Firebase dict错误的帮助。已经尝试了与该问题相关的一些解决方案,但没有奏效。 我想使用AlertView获取和更新表中的数据,但是我在 addtaskpop()中将字典作为调用中的额外参数'data'时遇到错误在下面标记的提交动作中起作用

Secondviewcontroller.swift

    func addtaskpop() {
        let db = Firestore.firestore()

        let alertController = UIAlertController(title: "Task", message: "Enter your Task and Amount", preferredStyle: .alert)

        let submit = UIAlertAction(title: "Enter", style: .default)
        {
            (_) in

             let task1 = alertController.textFields?[0].text
             let amount1 = alertController.textFields?[1].text
            let income1 = alertController.textFields?[2].text


            self.dev = income1!
            print("dev is \(self.dev)")
          let amountcolor = Int(amount1!)
            self.income.isHidden = false
//            let incomeint = Int(income1!)
//            var incometotal = incomeint
//            incometotal = (incomeint + incomeint)
            self.income.text = ("Income is Rs. \(self.dev)")
            self.amount.append(amount1!)
            let text = amount1
            let textInt = Int(text!)
            self.numbers.append(textInt!)

            let total = self.numbers.reduce(0, +)
            let amountstring = String(total)
            self.totalamount.text = ("Rs.\(amountstring)")



            let date = Date()
            let format = DateFormatter()
            format.dateFormat = "dd-MM-yyyy HH:mm"
            let formattedDate = format.string(from: date)
            print(formattedDate)


            self.poptaskarray.append(task1!)
            self.date.append(formattedDate)
            self.mytableView.reloadData()


            var docRef: DocumentReference? = nil
            docRef = db.collection("Tasks").addDocument(data: [ **Extra argument 'data' in call**
                "expensename": task1.text ?? "empty task",
//                "expensename": task1.text ?? "empty task",
                "minus": amount1.text ?? "empty task",
                "date": "\(formattedDate!)",
                "amount": self.totalamount.text ?? "empty task",
                "income": income.text ?? "empty task",


            ]) { err in
                if let err = err {
                    print("Error adding document: \(error.localizedDescription)")
                } else {
                    print("Document added with ID: \(docRef!.documentID)")
                }
            }
        }

        let cancelAction = UIAlertAction(title: "Cancel", style: .destructive) { (_) in

        }
        alertController.addTextField { (textField) in
            textField.placeholder = "Enter your task"
        }
        alertController.addTextField { (textField) in
            textField.placeholder = "Enter your amount"
            textField.keyboardType = .numberPad
//            textField.text = "Rs. "


        }
        alertController.addTextField { (textField) in
            textField.placeholder = "Enter your income"
            textField.keyboardType = .numberPad        
        }    

        alertController.addAction(cancelAction)
        alertController.addAction(submit)
        //finally presenting the dialog box
        self.present(alertController, animated: true, completion: nil)
    }   
}

我已经创建了 Task.swift

import Foundation

struct Task{
    var expensename:String
    var done: Bool
    var date: String
    var id: String
    var amount: String
    var income: String
    var minus: String
    var dictionary: [String: Any] {
        return [
            "expensename": expensename,
            "done": done,
            "date": date,
            "amount": amount,
            "income": income,
            "minus": minus
        ]
    }
}

extension Task{
    init?(dictionary: [String : Any], id: String) {
        guard
        let expensename = dictionary["expensename"] as? String,
        let done = dictionary["done"] as? Bool,
        let date = dictionary["date"] as? String,
        let amount = dictionary["amount"] as? String,
        let income = dictionary["income"] as? String,
        let minus = dictionary["minus"] as? String
            else {
                return nil

        }

        self.init(expensename: expensename, done: done, date: date, id: id, amount: amount , income: income, minus: minus)
    }
}

感谢您的帮助!

感谢和问候

0 个答案:

没有答案