macos - 使用数组填充 NSTableView - 绑定(bind)表

标签 macos swift xcode6

喂!

我在将数组中的一些数据显示到 NSTableView 时遇到问题。 我的信息保存在核心数据中。我获取此信息并添加到一个数组中,但是当我尝试在表中添加此信息时,我收到的只是一个具有正确行数的表,但都具有相同的隐式文本:“TableView Cell”。

对于每个表列,我都设置了一个标识符,并且我认为我的绑定(bind)是正确的。 这是我的表 Controller 代码:

  @IBAction func reload(sender: NSButton) {
    tableView.reloadData()
}

func getItemsFromDataBase() {
    let fetchRequest = NSFetchRequest(entityName: "MyData")

    // Create a sort descriptor object that sorts on the "title"
    // property of the Core Data object
    let sortDescriptor = NSSortDescriptor(key: "nume", ascending: true)

    // Set the list of sort descriptors in the fetch request,
    // so it includes the sort descriptor
    fetchRequest.sortDescriptors = [sortDescriptor]

    if let fetchResults = managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [MyData] {
        for var i = 0 ; i < fetchResults.count  ; i++ {
            objects.append(fetchResults[i])   //Get  data  from database and put in array

        }
    }

}

 func numberOfRowsInTableView(tableView: NSTableView) -> Int {
    getItemsFromDataBase()
    showNames()
    return objects.count
}




func tableView(tableView: NSTableView, objectValueForTableColumn tableColumn: NSTableColumn?, row: Int) -> AnyObject? {

    let identifier = tableColumn?.identifier
    println(identifier!)

    if let propertyEnum = ArrayDisplayProperty(rawValue: identifier!) {
        let cellView = tableView.makeViewWithIdentifier(identifier!, owner: self) as NSTableCellView

        let object = objects[row]

        switch propertyEnum {
        case .Nume:
            cellView.textField!.stringValue = object.nume
        case .Prenume:
            cellView.textField!.stringValue =  object.prenume
        case .Varsta:
            cellView.textField!.stringValue = "\(object.varsta)"
        case .Localitate :
            cellView.textField?.stringValue = object.localitate
        case .Major:
            cellView.textField?.stringValue = object.major == 1 ? "Yes" : "No"
        }

        println(object.nume)

        return object.varsta
    }

 return 0
}

最佳答案

您是否仅对表格列或文本字段和文本字段单元格列进行了界定? 这两个 Value 都需要通过模型键路径绑定(bind)到 Table Cell View(假设您有具有属性“name”的实体 Person)objectValue.name。 Xcode 显示一些警告“无法解析输入的 key 路径”,但我认为可以忽略。

例如,如果我的实体 Person 仅具有一个属性 name,则我的绑定(bind)与数组 Controller 如下所示:

表格 View -> 表格内容 -> 内容 -> 使用 Controller 键rangedObjects绑定(bind)到数组 Controller

名称列 -> 值 > 使用 Controller 键 arrangedObjects 和模型键路径 name 绑定(bind)到数组 Controller

文本字段 -> 值 -> 使用模型键路径绑定(bind)到表单元格 View objectValue.name

文本字段单元格 -> 值 -> 使用模型键路径绑定(bind)到表单元格 View objectValue.name

关于macos - 使用数组填充 NSTableView - 绑定(bind)表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374559/

相关文章:

ios - 从 Parse 检索 CreatedAt 数据 - Swift

ios - UIBarButtonItem 不显示 ios 8

macos - 如何在 Perl 脚本打印中添加换行符

ios - 使用 Button 生成 FlexBox 布局

Swift 导航栏按钮和标题不出现

swift - 无缝连接 AVAssets

python - 如何在新计算机上镜像 Anaconda 安装?

macos - MonoMac 平台与框架的互操作

python - 如何从 Python 中的文件中读取列表?

ios - UITableViewCell 的字幕不会更新