我是苹果开发的新手,我正试图用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()
}
}
}
}
}
}
1条答案
按热度按时间jmo0nnb31#
首先,您没有正确声明数组
第二件事是你的“customerArray”似乎声明为
[CustomerData]
,而你试图向其追加Customers
对象。如果这些类型完全不相关,编译器会感到困惑,这可能是导致此错误的原因。你可能需要将customerArray
的类型更改为以下类型:下面是一些学习如何设计Swift代码样式的资源:
但是要了解更多关于如何最有效地使用Swift的信息,我强烈建议你去看一下官方的Swift Language Guide,最好是完整地阅读一下。它的信息量非常大!