Macos NsEndomanager注册表NdoWithTarget设置值错误

Macos NsEndomanager注册表NdoWithTarget设置值错误,macos,cocoa-bindings,Macos,Cocoa Bindings,在我的OS X 10.11 Cocoa应用程序中,使用Swift 2,我试图实现绑定文本字段的撤销管理器,当我点击撤销时,它总是将0作为值,而不是我存储的值。我使用了下面显示的代码。如果我在中添加一些print()语句,我会在register语句中看到正确的值,但是撤销操作总是回写0。我做错了什么?NSTextField绑定到“ud”属性 private func updatePointValue(键:字符串,值:双精度){ 让index=key.startIndex.advancedBy(1)

在我的OS X 10.11 Cocoa应用程序中,使用Swift 2,我试图实现绑定文本字段的撤销管理器,当我点击撤销时,它总是将0作为值,而不是我存储的值。我使用了下面显示的代码。如果我在中添加一些print()语句,我会在register语句中看到正确的值,但是撤销操作总是回写0。我做错了什么?NSTextField绑定到“ud”属性

private func updatePointValue(键:字符串,值:双精度){
让index=key.startIndex.advancedBy(1)
let first=String(key.characters.first!)大写字符串
让rest=key.substringfromfromindex(index)
让选择器=选择器(“设置\(第一个)\(其余):”)
让oldValue=order.amounts[key]!
undoManager!.registerUndoWithTarget(self,selector:selector,object:oldValue)
订单金额[键]=值
}
动态变量ud:Double{
得到{
退货订单。金额[“ud”]??0
}
设置{
updatePointValue(“ud”,值:newValue)
}
}

注册表EndowithTarget的最后一个参数是对象。Swift会将双精度密码转换为NSNumber,但撤消管理器不会将NSNumber转换为双精度密码。

谢谢!我现在传入一个带有键和值的字典,然后调用一个方法,该方法再次使用正确的项调用updatePointValue。