gpt4 book ai didi

swift - 无法以编程方式将字典数组中的行添加到 NSTable

转载 作者:行者123 更新时间:2023-11-30 10:38:48 25 4
gpt4 key购买 nike

我希望能够以编程方式将行添加到我的表中。从数组添加列标题非常容易。我有一个包含行数据的字典数组我可以将 csv 数据导入到该数组中。

var rowData = [[String:String]]()

我想将其转储到我的表的行中。我错过了什么?

我已经尝试过... func numberOfRows() 和 func tableView() 但它们没有像我用 IB 创建表时那样的效果

import Foundation
import Cocoa

class TableView:NSObject{

var tableContainer = NSScrollView.init(frame: NSRect(x:0, y: 0, width: 800, height: 200))
var tableView:NSTableView = NSTableView(frame: NSRect(x:0, y: 0, width: 800, height: 200))

func populateHeaders(){
for x in 0..<headers.count {
let column = NSTableColumn.init(identifier:NSUserInterfaceItemIdentifier(rawValue: headers[x]))
tableView.addTableColumn(column)
column.headerCell = NSTableHeaderCell(textCell: headers[x])
}
}





override init (){
super.init()
populateHeaders()
self.tableView.delegate = self
self.tableView.dataSource = self
tableView.reloadData()
tableContainer.documentView = tableView
tableContainer.hasVerticalScroller = true

}

}

extension TableView: NSTableViewDelegate, NSTableViewDataSource {
func numberOfRows(in tableView: NSTableView) -> Int {
return csvArray.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
var result:NSTableCellView
result = tableView.makeView(withIdentifier: (tableColumn?.identifier)!, owner: self) as! NSTableCellView
result.textField?.stringValue = csvArray[row][(tableColumn?.identifier.rawValue)!]!
print("hi")
return result
}
func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
return true
}


}

没有错误,上面的代码运行。只需要一种导入行的方法。

最佳答案

您使用了错误的 TableView 数据源委托(delegate)方法。对基于单元格的表格使用 tableView(_:objectValueFor:row:) 委托(delegate)方法。

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
let dict = csvArray[row]
if ((tableColumn?.identifier)!.rawValue == "firstColumn") {
return dict["whatever"]
}
else if ((tableColumn?.identifier)!.rawValue == "secondColumn") {
return dict["whatever"]
}
...
...
}

我不知道确切的列 ID。在身份检查器下为每一列输入一个 ID。

关于swift - 无法以编程方式将字典数组中的行添加到 NSTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com