Ответ 1
Try:
@objc(MyApplication)
class MyApplication: NSApplication {
ИЛИ, вы должны установить Info.plist следующим образом.
<key>NSPrincipalClass</key>
<string>YourAppName.MyApplication</string>
^^^^^^^^^^^^
Нет точного документа об этом, но это описание соответствует:
Чтобы сохранить пространство имен, когда класс Swift используется в коде Objective-C, классы Swift отображаются во время выполнения Objective-C с их полными именами. Поэтому, когда вы работаете с API-интерфейсами, которые работают с строковым представлением класса Swift, вы должны указать полное имя класса. Например, когда вы создаете Mac-приложение на основе документов, вы указываете имя своего подкласса NSDocument в вашем приложении Info.plist. В Swift вы должны использовать полное имя вашего подкласса документа, включая имя модуля, полученное от имени вашего приложения или фреймворка.
и this:
Когда вы используете атрибут
@objc(<#name#>)
в классе Swift, класс становится доступным в Objective-C без какого-либо пространства имен.