В моей OS X 10.11 приложение Cocoa с использованием Swift 2, я пытаюсь реализовать менеджер отмены для связанного текстового поля, и когда я удаляю отмену, он всегда просто помещает 0 для значения, вместо этого из того, что я хранил. Я использовал код, показанный ниже. Если я добавлю некоторые инструкции print(), я вижу правильные значения, поступающие в регистр, но отмена всегда записывает 0 обратно. Что я сделал не так? NSTextField привязан к свойству «ud».NSUndoManager registerUndoWithTarget установка неправильного значения
private func updatePointValue(key: String, value: Double) {
let index = key.startIndex.advancedBy(1)
let first = String(key.characters.first!).uppercaseString
let rest = key.substringFromIndex(index)
let selector = Selector("set\(first)\(rest):")
let oldValue = order.amounts[key]!
undoManager!.registerUndoWithTarget(self, selector: selector, object: oldValue)
order.amounts[key] = value
}
dynamic var ud: Double {
get {
return order.amounts["ud"] ?? 0
}
set {
updatePointValue("ud", value: newValue)
}
}
Спасибо! Теперь я перехожу в словарь с ключом и значением, а затем вызывает метод, который снова вызывает updatePointValue с нужными элементами. – Gargoyle