将NSUndoManager与Swift 4和Xcode 10.1一起使用
我正在阅读Big Nerd Ranch为OS X book编写的Cocoa程序,我被困在第11章——与NSUndoManager合作。据我所知,NSUndoManager现在只是一个UndoManager,但我无法编译其余的示例代码 有关守则如下:将NSUndoManager与Swift 4和Xcode 10.1一起使用,swift,xcode,cocoa,swift4,Swift,Xcode,Cocoa,Swift4,我正在阅读Big Nerd Ranch为OS X book编写的Cocoa程序,我被困在第11章——与NSUndoManager合作。据我所知,NSUndoManager现在只是一个UndoManager,但我无法编译其余的示例代码 有关守则如下: class Document: NSDocument { @objc dynamic var employees: [Employee] = [] func insertObject(employee: Employee, in
class Document: NSDocument {
@objc dynamic var employees: [Employee] = []
func insertObject(employee: Employee, inEmployeesAtIndex index: Int) {
let undo: UndoManager = undoManager!
undo.prepare(withInvocationTarget: self).insertObjectFromEmployeesAtIndex(employees.count)
if !undo.isUndoing {
undo.setActionName("Add Person")
}
}
func insertObjectFromEmployeesAtIndex(index: Int) {
let employee: Employee = employees[index]
let undo: UndoManager = undoManager!
undo.prepare(withInvocationTarget: self).insertObject(employee: employee, inEmployeesAtIndex: index)
employees.remove(at: index)
}
}
我得到的错误是两个函数中的行undo.prepare
。错误是:
类型为“Any”的值没有成员“InsertObjectFromEmployeesIndex”
及
将'Any'强制转换为'AnyObject'或使用'as!'强制向下转换到更特定的类型以访问成员
查看您是否尝试了错误消息的建议?另请参见@rmaddy链接的问题似乎解决了编译器问题,但功能实际上不起作用。NSArrayController是否假设自动调用这些方法?(可能是另外一个问题?@Genu您看到的是一种键值编码方法。