Я пытаюсь реализовать NSOutlineViewDataSource с Swift и при использовании строк Swift приложение просто сбой. Когда я меняю массив people
на NSString, он отлично работает.NSOutlineViewDataSource и Swift
В соответствии с Working with Cocoa Data Types перемычка строки должна быть автоматической при импорте Foundation.
Вот источник данных код:
import Cocoa
import Foundation
class ViewController: NSViewController, NSOutlineViewDataSource {
let people: [String] = ["Mary", "John", "Paul"] // when using NSString it works fine
func outlineView(outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int {
return item == nil ? people.count : 0
}
func outlineView(outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool {
return false
}
func outlineView(outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject {
return people[index]
}
func outlineView(outlineView: NSOutlineView, objectValueForTableColumn tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? {
return item
}
}
Любая идея, почему это происходит?
Xcode версии 6.1 (6A1052d)
Xcode проект размещен здесь: https://github.com/tanob/ExampleNSOutlineView
Я не могу воспроизвести это поведение. Используя исключительно код, который вы предоставляете, когда я использую '' String'' или '' NSString'', я не получаю сбой, всего три пустые строки. Выполняете ли вы какие-либо методы делегата или используете привязки для получения значений, отображаемых в ячейках? –
Я подтолкнул проект к Github, чтобы его было легче воспроизвести. Я использую раскадровки и просто подключил выход источника данных NSOutlineView' к 'ViewController'. 'ViewController' просто реализует' NSOutlineDataSourceProtocol'. Я также использую «NSOutlineView» на базе ячеек. –
Спасибо за демо-приложение - теперь у меня есть поведение (я предположил, что вы используете OV на основе представления). –