无法在Swift 6.1 GM seed2中注册NSUndoManager

时间:2014-10-15 23:43:35

标签: swift nsundomanager

我无法让NSUndoManager在Swift Xcode版本6.1 GM Seed 2中运行。我已多次阅读文章How do I register NSUndoManager in Swift?,但我无法在6.1中使用它。

以下是显示我的尝试的代码段:

func zoomFractalClick(imagePoint: NSPoint?) {
    //NSLog("Point zoomed \(imagePoint)")
    if imagePoint == nil { return }
    let tag = zoomPopUp.selectedItem!.tag

    // Try setting undo/redo
    undoManager.registerUndoWithTarget(self, selector: Selector("resetFractalDef"), 
      object: StructWrapper<MJFractalDefinition>(object: fractalDef))
    //(undoManager.prepareWithInvocationTarget(self) as AppDelegate).
    //  resetFractalDef(StructWrapper<MJFractalDefinition>(object: fractalDef))

    fractalDef.zoomBounds(centerPoint: imagePoint!, zoomPower: Double(tag))      
    drawFractal()
}

func resetFractalDef( fractalDef: StructWrapper<MJFractalDefinition>) {
    self.fractalDef = fractalDef.object
    drawFractal()
}  

class StructWrapper<T> {
    let object: T  
    init( object: T) {
        self.object = object
    }
}

使用'简单'方法,即使保存撤消,一切都可以正确编译和运行。但是,当我从编辑菜单中选择撤消时,我收到错误,它无法找到选择器'resetFractalDef'。

我还尝试使用Undo的调用方法进行准备,并且在尝试使用调用目标报告'EXC_BREAKPOINT'来准备撤消时失败。

请,任何帮助将不胜感激。我是一名Java程序员,学习在Apple环境中编程,主要是喜欢使用Swift。

0 个答案:

没有答案