CaO*_*433 2 swift3 swift4 macos-high-sierra xcode9.1
在我的项目(MacOS,Swift 4)中,我收到此错误:"当我尝试设置NSTableViewDataSource时,无法下载类型'[String:String]'的值,其索引类型为'NSUserInterfaceItemIdentifier'".它在Swift 3中运行得很好,但是当我将项目更新到Swift 4时,它停止了工作.
所以我想要做的是通过使用单元格id在"tableView"中显示"tableViewData".
这是我的代码:
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var tableView:NSTableView!
let tableViewData = [["picID":"default","nameID":"default","amount":"1","address":"default"],["picID":"default","nameID":"default","amount":"1","address":"default"]]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self as? NSTableViewDelegate
self.tableView.dataSource = self
}
}
extension ViewController:NSTableViewDataSource{
func numberOfRows(in tableView: NSTableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
return tableViewData[row][(tableColumn?.identifier)!] // This is where the error appears
}
}
Run Code Online (Sandbox Code Playgroud)
知道Swift 4中有什么变化吗?
NSUserInterfaceItemIdentifier是一种结构类型.您应该调用.rawValue以获取基础值:
tableViewData[row][(tableColumn?.identifier.rawValue)!]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |