如何使用Swift在Cocoa中添加Command-Q逻辑?

如何使用Swift在Cocoa中添加Command-Q逻辑?,cocoa,swift,xcode6,Cocoa,Swift,Xcode6,我想在我的Cocoa应用程序中添加一些逻辑,当用户输入Command-Q试图退出应用程序时,但我如何在Swift中添加它 我想做的是这样的,但这是在Objective-C上,当我尝试将它移植到我的Swift应用程序时,它没有成功,因为它看起来像是applicationShouldTerminate在Swift中不再可用,因为它对我的Xcode中方法的完成没有反应 另外,当我试图像上面的帖子那样编写NSTerminateNow时,我遇到了一个无法解决的错误,因此NSTerminateNow也在Sw

我想在我的Cocoa应用程序中添加一些逻辑,当用户输入Command-Q试图退出应用程序时,但我如何在Swift中添加它

我想做的是这样的,但这是在Objective-C上,当我尝试将它移植到我的Swift应用程序时,它没有成功,因为它看起来像是
applicationShouldTerminate
在Swift中不再可用,因为它对我的Xcode中方法的完成没有反应

另外,当我试图像上面的帖子那样编写
NSTerminateNow
时,我遇到了一个无法解决的错误,因此
NSTerminateNow
也在Swift和Xcode 6中消失了


所以,如果我想在用户将Command-Q放入我的Swift和Cocoa应用程序后添加一些逻辑,我如何在Xcode 6中实现它?我是否应该避免使用
应用程序应该终止
方法?

同样的方法在Swift中也可以正常工作:

class AppDelegate: NSObject, NSApplicationDelegate {

    // ...

    func applicationShouldTerminate(sender: NSApplication!) -> NSApplicationTerminateReply {
        let shouldTerminate = ... // Should I stay or should I go?
        return shouldTerminate ? .TerminateNow : .TerminateCancel
    }

}

同样的方法适用于Swift,没有问题:

class AppDelegate: NSObject, NSApplicationDelegate {

    // ...

    func applicationShouldTerminate(sender: NSApplication!) -> NSApplicationTerminateReply {
        let shouldTerminate = ... // Should I stay or should I go?
        return shouldTerminate ? .TerminateNow : .TerminateCancel
    }

}

它还在那里,只是藏起来了。如果您在应用程序代理的声明中命令单击NSApplicationedLegate,您可以看到它实现的所有方法,包括:

func applicationShouldTerminate(sender: NSApplication!) -> NSApplicationTerminateReply {
    // stuff and return stuff    
}

似乎(目前希望如此)协议中声明的可选方法并不是由autocomplete建议的。

它仍然存在,只是隐藏起来了。如果您在应用程序代理的声明中命令单击NSApplicationedLegate,您可以看到它实现的所有方法,包括:

func applicationShouldTerminate(sender: NSApplication!) -> NSApplicationTerminateReply {
    // stuff and return stuff    
}

似乎(希望现在)协议中声明的可选方法不是autocomplete建议的。

感谢您提供有关签出所有方法声明的信息!我错误地按原样定义了
NSTerminateNow
——它应该是
.TerminateNow
,正如Martin R所建议的那样,这导致了第二个问题。谢谢。感谢您提供有关签出所有方法声明的信息!我错误地按原样定义了
NSTerminateNow
——它应该是
.TerminateNow
,正如Martin R所建议的那样,这导致了第二个问题。谢谢。当我点击命令Q时,方法不会调用。当我点击命令Q时,方法不会调用。