示例TableView无法打印数组Swift OSX

时间:2015-06-30 17:57:58

标签: macos swift tableview

我的应用程序中有下一个代码,但只打印下一个图像,我不知道为什么。有人可以帮我解决这个错误。我认为错误出现在字典中。

window without text

import Cocoa

class ViewController: NSViewController {

@IBOutlet weak var viewTable: NSTableView!

func getDataArray () -> NSArray{
    var dataArray:[NSDictionary] = [["FirstName": "Debasis", "LastName": "Das"],
        ["FirstName": "Nishant", "LastName": "Singh"],
        ["FirstName": "John", "LastName": "Doe"],
        ["FirstName": "Jane", "LastName": "Doe"],
        ["FirstName": "Mary", "LastName": "Jane"]];
    return dataArray;
}

func numberOfRowsInTableView(aTableView: NSTableView!) -> Int
{
    let numberOfRows:Int = getDataArray().count
    return numberOfRows
}

func tableView(tableView: NSTableView!, objectValueForTableColumn tableColumn: NSTableColumn!, row: Int) -> AnyObject!
{
    var newString: (AnyObject?) = getDataArray().objectAtIndex(row).objectForKey(tableColumn.identifier)
    println(newString)
    return newString;
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

override var representedObject: AnyObject? {
    didSet {
    }
}


} 

也许这很愚蠢,但知道该怎么做很好,我希望它会有用。最后我的代码可以工作,他唯一需要的就是设置为数据源。

DatasourceViewController

1 个答案:

答案 0 :(得分:2)

您是否为故事板中的单元格设置了标识符?如果是这样,那么只需获取行并使用标识符即可获得“FirstName”或“LastName”,您将返回

func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject?
{
    var columnIdentifier = tableColumn!.identifier
    var newString: (AnyObject?)
    newString = getDataArray().objectAtIndex(row).valueForKey(columnIdentifier)
    println(newString)
    return newString
}

如果您还有其他问题如何使用基于单元格的tableViews:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TableView/PopulatingCellTables/PopulatingCellTables.html

编辑: 您应该将tableView设置为Cell Based。 而且我认为您忘记将ViewController设置为数据源,并在故事板中为tableview设置delegete