gpt4 book ai didi

swift - Xcode 数组到 NSTableView

转载 作者:可可西里 更新时间:2023-11-01 01:09:19 25 4
gpt4 key购买 nike

我做了一些搜索,一些编码,一些搜索,然后一些编码。我只是还不能让它自己工作。我想从我定义的数组中获取数据:

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

我将通过外部 API 调用分块填充数组。我可以每 100 个 block 调用一次刷新。这是人口:

for i in 0 ..< json["publishers"].count {
let pname: String = String(describing: json["publishers"][i]["publisher"]["account_name"])
let pid: String = String(describing: json["publishers"][i]["publisher"]["publisher_id"])
self.allPublishers.append(["name": pname, "id": pid])
}

例如,在第一个 100 之后我调用这个函数:

self.showPublishers()

为了这些目的,现在只显示类型:

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

类型是:Array<Dictionary<String, String>>

部分填充 block 的示例是:

[["id": "1100l6141", "name": "014loyalia"], ["id": "1101l11949", "name": "030magazin"]]

我的 NSTableView 设置了一个导出:

@IBOutlet weak var tableView: NSTableView!

在我的 Main.storyboard 中:

NSTableView

除了 ViewController.swift 之外,我目前对此没有绑定(bind)。导出。

当我执行程序时,TableView 会更新行,但不会使用数组中的值:

Rows

这是我的 tableView功能:

extension ViewController:NSTableViewDataSource{
func numberOfRows(in tableView: NSTableView) -> Int {
return allPublishers.count
}

func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return allPublishers[row][(tableColumn?.identifier.rawValue)!]
}
}

任何人都可以建议如何填充此 NSTableView来自 allPublishers 的实际数据好吗?

提前致谢!

最佳答案

强烈建议您不要使用基于单元格的表格 View 。

Cocoa 绑定(bind)和基于 View 的 TableView 非常容易实现。

  • allPublishers 声明为 dynamic

    @objc dynamic var allPublishers = [[String: String]]() // however a custom class is highly recommended.
  • 在界面生成器中
    • 断开数据源
    • 将表格 View 从 Cell Based 更改为 View Based
    • 将 TableView 的Content绑定(bind)到ViewController > allPublishers
    • 将第一列的 Table View CellValue 绑定(bind)到 Table Cell View > objectValue.name
    • 将第二列Table View CellValue绑定(bind)到Table Cell View > objectValue.id

请注意 Table View CellTable Cell View 的细微但重要的区别

无需更多代码。

关于swift - Xcode 数组到 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49050260/

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