Swift 绑定到表视图单元格时的EXC_BAD_指令
我正在阅读Big Nerd Ranch的《OS X可可编程》一书,我被困在第9章——与NSArrayController合作。这本书不是最新的,所以我必须在网上搜索一些东西才能使它生效 我无法将TableViewCell绑定到对象的键 所以我有一个目标:Swift 绑定到表视图单元格时的EXC_BAD_指令,swift,xcode,cocoa,swift4,Swift,Xcode,Cocoa,Swift4,我正在阅读Big Nerd Ranch的《OS X可可编程》一书,我被困在第9章——与NSArrayController合作。这本书不是最新的,所以我必须在网上搜索一些东西才能使它生效 我无法将TableViewCell绑定到对象的键 所以我有一个目标: import Foundation class Employee: NSObject { var name: String? = "New Employee" var raise: Float = 0.05
import Foundation
class Employee: NSObject {
var name: String? = "New Employee"
var raise: Float = 0.05
}
这是绑定到NSArrayController内容数组的
使用Employee
对象的文档控制器是:
import Cocoa
class Document: NSDocument {
@objc dynamic var employees: [Employee] = []
override init() {
super.init()
// Add your subclass-specific initialization here.
}
override class var autosavesInPlace: Bool {
return true
}
override var windowNibName: NSNib.Name? {
return NSNib.Name("Document")
}
}
一切正常,结果如下所示:
问题是,当我为表格单元格视图设置绑定时,如下所示:
程序仍在加载,但当我单击“添加员工”时,程序会因错误而崩溃
Xcode版本:10.1
Swift版本:4
线程1:EXC_BAD_指令(code=EXC_I386_INVOP,subcode=0x0)
控制台中没有关于错误的其他信息。Cocoa绑定基于键值观察,属性必须标记为动态
,并且Objective-C推断已在Swift 4中更改,您必须将@objc
属性添加到每个受影响的属性
class Employee: NSObject {
@objc dynamic var name: String? = "New Employee"
@objc dynamic var raise: Float = 0.05
}
Cocoa绑定基于键值观察,属性必须标记为
dynamic
,并且Objective-C推断在Swift 4中已更改,您必须向每个受影响的属性添加@objc
属性
class Employee: NSObject {
@objc dynamic var name: String? = "New Employee"
@objc dynamic var raise: Float = 0.05
}