Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 绑定到表视图单元格时的EXC_BAD_指令_Swift_Xcode_Cocoa_Swift4 - Fatal编程技术网

Swift 绑定到表视图单元格时的EXC_BAD_指令

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

我正在阅读Big Nerd Ranch的《OS X可可编程》一书,我被困在第9章——与NSArrayController合作。这本书不是最新的,所以我必须在网上搜索一些东西才能使它生效

我无法将TableViewCell绑定到对象的键

所以我有一个目标:

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
}