我很安静地对快速数组的行为感到困惑。在下面的示例中,当我尝试向数组inboxDocuments添加新元素时,我在运行时收到EXC_BAD_ACCESS错误。
import Cocoa
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow
var inboxDocuments:[ArchiveDocumentFile] = []
func applicationDidFinishLaunching(aNotification: NSNotification?) {
var docFile = ArchiveDocumentFile(newFile: "")
inboxDocuments.append(docFile)
}
func applicationWillTerminate(aNotification: NSNotification?) {
// Insert code here to tear down your application
}
}
令人惊讶的是,当我将Array的类型更改为String数组时
var inboxDocuments:[String] = []
然后尝试添加一个String,一切正常。
inboxDocuments.append("docFile")
我做错了什么,所以我的自定义类类型数组不起作用?
我目前正在使用XCode Beta 3
编辑1:
这是调试器抱怨的一个screeshot。
编辑2:
经过进一步调查后,似乎问题是我绑定到该数组的NSArrayController。我用它来为NSCollectionView提供数据。
我可以将arrayController绑定到数组。工作正常。
我可以将集合视图绑定到控制器。工作良好。 (未填充值)条目显示在正确的计数中。
但是当我将我的Object的值绑定到视图标签时,我在运行时遇到上述错误......奇怪。
编辑3:
我解决了这个问题...... ArchiveDocumentFile中的绑定值是一个常量(用let声明)。当我把它改成var时,它工作得很安静。问题可能是因为常量不符合KVC。但是为什么会导致这样的错误?
答案 0 :(得分:1)
我解决了问题... ArchiveDocumentFile中的绑定值是一个常量(用let声明)。当我把它改成var时,它工作得很安静。问题可能是因为常量不符合KVC。但是为什么会导致这样的错误?