Я пытаюсь преобразовать эти строки в Objective- C в swift
- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
{
...
NSAppleEventDescriptor* appleEventDesc = [[NSAppleEventManager sharedAppleEventManager] currentAppleEvent];
NSAppleEventDescriptor* whyDesc = [appleEventDesc attributeDescriptorForKeyword:kEventParamReason];
OSType why = [whyDesc typeCodeValue];
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
, они обнаружат, завершается ли приложение из-за закрытия системы.
Я невозможно преобразовать эту строку
if (why==kAEShutDown || why==kAERestart || why==kAEReallyLogOut)
Я угадал что-то вроде
let codeValue = whyDescription?.typeCodeValue
if ((codeValue == AEKeyword(kAEShutDown)) ||
(codeValue == AEKeyword(kAERestart)) ||
(codeValue == AEKeyword(kAEReallyLogOut))) {
Это правильно?
или должно быть
if ((codeValue == OSType(kAEShutDown)) ||
(codeValue == OSType(kAERestart)) ||
(codeValue == OSType(kAEReallyLogOut))) {
Xcode компилирует его нормально, но я не уверен, что kAEShutDown
, kAERestart
и kAEReallyLogOut
являются `AEK-ключевыми словами, которые можно использовать там.
Я не смог найти документации по этому вопросу, как и ожидалось.