0

需要一些关于 firebase dict 错误的帮助。已经尝试了一些与该问题相关的解决方案但没有奏效..我想使用alertview将数据获取和更新到表中,但我在addtaskpop中调用dict作为额外参数'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)
    }
}

任何帮助表示赞赏!

谢谢并恭祝安康

4

0 回答 0