【发布时间】:2015-07-07 22:04:30
【问题描述】:
我正在尝试使用带有两列的 tableView 构建应用程序(一列显示字符串,另一列显示每个字符串的 CheckBox)。 字符串来自 [AnyObject] 变量。 我尝试了很多方法将 [AnyObject] 的结果插入到 NsMutableDictionnary(由 NsTableView 使用)中,但它们都不起作用。 我必须使用正确数量的对象(与 [AnyObject] 的结果相关)手动构建 dic 以使其工作,但我希望 dic 自动构建自身。
这是一个代码示例,如果 [AnyObject] 由 4 个元素组成,则可以正常工作。 TableView 列名是“jobs”和“unload”:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate,NSTableViewDataSource,NSTableViewDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var myTableView: NSTableView!
var dataArray:[NSMutableDictionary] = [["jobs": "", "unload": 0],["jobs": "", "unload": 0],["jobs": "", "unload": 0],["jobs": "", "unload": 0]];
func applicationDidFinishLaunching(aNotification: NSNotification) {
...
...
...
var ctlelems:[AnyObject] = grepOut!.componentsSeparatedByCharactersInSet(NSCharacterSet.newlineCharacterSet())
dataArray = [["jobs": "ctlelems[0]", "unload": 0],["jobs": "ctlelems[1]", "unload": 0],["jobs": "ctlelems[2]", "unload": 0],["jobs": "ctlelems[3]", "unload": 0]];
}
func applicationWillTerminate(aNotification: NSNotification) {
}
func numberOfRowsInTableView(aTableView: NSTableView) -> Int
{
return dataArray.count
}
func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject?
{
let object = dataArray[row] as NSMutableDictionary
if ((tableColumn!.identifier) == "unload")
{
println(object)
return object[tableColumn!.identifier] as? Int!
}
else
{
return object[tableColumn!.identifier] as? String!
}
}
func tableView(tableView: NSTableView, setObjectValue object: AnyObject?, forTableColumn tableColumn: NSTableColumn?, row: Int)
{
dataArray[row].setObject(object!, forKey: (tableColumn?.identifier)!)
}
}
我想做以下事情,
var x: Int = 0
for lines in ctlelems {
dataArray = [["jobs": ctlelems[x], "unload": 0]];
x=x+1
}
但它不起作用。 大多数时候我得到“Found nill”错误,或者只显示 [AnyObject] 的最后一个元素。 有人可以帮帮我吗?
【问题讨论】:
标签: swift cocoa nstableview