我创建了NSApplication子类:
class MyApplication: NSApplication {
override func sendEvent(theEvent: NSEvent) {
if theEvent.type == NSEventType.KeyUp && (theEvent.modifierFlags & .CommandKeyMask).rawValue != 0 {
self.keyWindow?.sendEvent(theEvent)
} else {
super.sendEvent(theEvent)
}
}
}
之后,我改变了#34;校长级"在Info.plist到MyApplication中,最后在Main.storyboard的Application Scene中,我也将Application更改为MyApplication。
当我运行应用程序时,我收到以下消息:
Unable to find class: MyApplication, exiting
有人可以帮我这个吗?
答案 0 :(得分:25)
尝试:
@objc(MyApplication)
class MyApplication: NSApplication {
或者,您必须像这样设置Info.plist。
<key>NSPrincipalClass</key>
<string>YourAppName.MyApplication</string>
^^^^^^^^^^^^
没有关于此的确切文档,但是this description is corresponding:
为了在Objective-C代码中使用Swift类时保留命名空间,Swift类以其完全限定名称公开给Objective-C运行时。因此,当您使用对Swift类的字符串表示形式进行操作的API时,必须包含该类的完全限定名称。例如,在创建基于文档的Mac应用程序时,可以在应用程序的 Info.plist 文件中提供NSDocument子类的名称。在Swift中,您必须使用文档子类的全名,包括从应用程序或框架名称派生的模块名称。
和this:
在Swift类上使用
@objc(<#name#>)
属性时,该类在Objective-C中可用,没有任何命名空间。