【发布时间】:2015-02-02 18:54:29
【问题描述】:
我正在尝试使用 Swift 实现 NSOutlineViewDataSource,但在使用 Swift 字符串时,应用程序简直崩溃了。当我将数组 people 更改为 NSString 时,它工作正常。
根据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)。
-
stackoverflow.com/questions/28134062/… 这个答案有效,我对 swift Strings 没有任何问题
-
这是我使用 Appcode 运行时得到的崩溃报告:raw.githubusercontent.com/tanob/ExampleNSOutlineView/master/…
标签: macos cocoa swift nsoutlineview