Использование NSUndoManager с Swift 4 и Xcode 10.1 - PullRequest
0 голосов
/ 01 января 2019

Я перебираю книгу «Программирование какао для OS X» от Big Nerd Ranch, и я застрял в главе 11 - работа с NSUndoManager.Как я понимаю, NSUndoManager теперь является просто UndoManager, но я не могу заставить остальную часть примера кода скомпилировать.

Соответствующий код:

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 в обеих функциях.Ошибка:

Value of type 'Any' has no member 'insertObjectFromEmployeesAtIndex'

и

Cast 'Any' to 'AnyObject' or use 'as!' to force downcast to a more specific type to access members

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...