Xcode: получение пути к файлу AppleScript в проекте Obj-C / Cocoa с помощью pathpathForResource - PullRequest
0 голосов
/ 24 мая 2019

У меня есть проект разработки плагина в X-коде (10.2.1), и я пытаюсь включить некоторый код AppleScript (FatApple.applescript) в один из методов в моем файле реализации.

На стороне AppleScript: я попытался написать код в редакторе сценариев, сохранить его на рабочем столе, перетащить файл FatApple.scptd в папки «Ресурсы», «Другие источники» и т. Д.Я попробовал те же шаги после запуска нового проекта Xcode для AppleScript и перетаскивания файла FatApple.applescript (пробовал с типом pathWithFormat как «scpt» и «applecript».

В Xcode я добавилFatApple.applescript к ресурсам Copy Bundle и удален из ресурсов компиляции.

-(float) calcThing
{
    NSAlert *alert=[[[NSAlert alloc] init] autorelease];
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *path = [bundle pathForResource:@"FatApple" ofType:@"scpt"];
    NSString *countstr=[NSString stringWithFormat:@"path=%@",path];
        [alert setMessageText: countstr];
        [alert runModal];
    NSAppleScript *script = [[NSAppleScript alloc] initWithContentsOfURL:[NSURL fileURLWithPath: path] error:nil];
        [script executeAndReturnError:nil];
}

Я хотел бы скомпилировать и запустить мой плагин, вызвать его в программе и получить сообщение с указанием пути к моему AppleScript,тогда в идеале я мог бы вызвать скрипт и начать делать что-то. Вместо этого я получаю «путь = (ноль)».

1 Ответ

0 голосов
/ 02 июля 2019

Я скопировал ваш код дословно в проект, и он работал для меня, используя фиктивный AppleScript. Единственное отличие, которое я вижу, состоит в том, что я удалил AppleScript в основной список файлов, а не в папку ресурсов, но это не должно иметь никакого значения. Сценарий отображается в папке ресурсов приложения, как ваша.

Единственное сомнительное, что я вижу в вашем коде, это то, что вы использовали - pathForResource:ofType: NSBundle вместо - URLForResource:withExtension:. NSAppleScript хочет NSURL, поэтому запросить у пакета путь и затем преобразовать его в URL кажется ненужным шагом, а ненужные шаги по своей природе подозрительны. Я не могу понять, почему это будет иметь значение (если контекст плагина не делает что-то необычное с путями к файлам ресурсов), но, вы знаете ...

...