【发布时间】:2021-03-01 16:29:18
【问题描述】:
我正在尝试使用结构填充 NSTableView。该结构正在从 Firebase 获取数据。我试图复制我在iOS 中的做法,但我还没有做到。
var orders = [OrderModel]()
struct OrderModel {
var order: String!
var name: String?
var adress: String?
var email: String?
}
从 Firebase 读取:
ref?.child("orders").observe( .childAdded, with: { (snapshot) in
let dict = snapshot.value as? [String : AnyObject] ?? [:]
let newData = OrderModel(order: dict["order"] as? String, name: dict["name"] as? String, adress: dict["adress"] as? String, email: dict["email"] as? String
self.orders.append(newData)
})
填充NSTableView:
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
guard let userCell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "ordersCell"), owner: self) as? OrdersTableViewCell else { return nil }
//the object
let order: OrderModel
//getting the object of selected position
order = orders[row] //Error index out of range
userCell.orderLabel.stringValue = order.order ?? "Error getting order"
userCell.nameLabel.stringValue = order.name ?? "Error getting name"
userCell.adressLabel.stringValue = order.adress ?? "Error getting address"
return userCell
}
我不知道这里唯一的问题是不是这一行:
order = orders[row] //错误索引超出范围
但这就是我现在所处的位置。
【问题讨论】:
-
请添加您的
NSTableViewDataSource代码。当self.orders发生变化时如何更新表格视图?
标签: swift macos cocoa nstableview