调用示例方法'append'时没有完全匹配项,macOS swift with Firebase

wkyowqbh  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(124)

我是苹果开发的新手,我正试图用Firebase Firestore的结构填充NSTableView。
但在追加数据时出现错误:

Var customerArray: [CustomerData]()

func numberOfRows(in tableView: NSTableView) -> Int {
    return customerArray.count
}

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> NSTableCellView?{

    let cell = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self)as? NSTableCellView {
        let customer = customerArray[row]
        cell.textField?.stringValue = customer.fullName
        return cell
    }
    return nil

}

这是我调用firebase的方法,它可以工作。

func loadCustomers(){
    db.collection(self.collectionName).addSnapshotListener { (QuerySnapshot, error) in
        self.customerArray = []
        if let error = error{
            print("Error getting documents,\(error)")
        } else {
            for document in QuerySnapshot!.documents{
                print("\(document.documentID) => \(document.data())"). // here the data printed in console
                let data = document.data()
                if let customerName = data["fullName"] as? String, let customerNumber =
                    data["phoneNum"] as? String {
                    let newCustomer = Customers(id: document.documentID,fullName: customerName, phoneNum: customerNumber, email: "", address: "", profession: "", age: "", dateOfBirth: "")

                    self.customerArray.append(newCustomer) // Here I need Help with appending data to NSTableView

                    DispatchQueue.main.async {
                        self.tableView.reloadData()
                    }
                }
            }
        }

    }
}

Here is a Screenshot of the error

jmo0nnb3

jmo0nnb31#

首先,您没有正确声明数组

var customerArray = [CustomerData]() 
// or
var customerArray: [CustomerData] = []

第二件事是你的“customerArray”似乎声明为[CustomerData],而你试图向其追加Customers对象。如果这些类型完全不相关,编译器会感到困惑,这可能是导致此错误的原因。你可能需要将customerArray的类型更改为以下类型:

var customerArray = [Customers]()

下面是一些学习如何设计Swift代码样式的资源:

但是要了解更多关于如何最有效地使用Swift的信息,我强烈建议你去看一下官方的Swift Language Guide,最好是完整地阅读一下。它的信息量非常大!

相关问题