Как передать аргументы AppleScripts в Objective-C? - PullRequest
1 голос
/ 23 февраля 2012

Я встроил AppleScript в свой проект XCode. Сценарий processId.scpt требует аргумента. Как я могу добавить это при выполнении сценария в Objective-C?

NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"processId" ofType:@"scpt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:scriptPath]) {
    NSURL *scriptUrl = [[NSURL alloc] initWithString:scriptPath];

    NSDictionary *error = nil;
    NSAppleScript *script = [[NSAppleScript alloc] initWithContentsOfURL:scriptUrl error:&error];
    NSAppleEventDescriptor *result = [script executeAndReturnError:nil];

    NSData *data = [result data];
    int pid = 0;
    [data getBytes:&pid length:[data length]];

    NSLog(@"Result: %d. %@. %@.", pid, [result stringValue], [error description]);        
}

Ответы [ 2 ]

0 голосов
/ 24 февраля 2012

В зависимости от настроек базового SDK (должно быть не менее 10,6), другой вариант - добавить скрипт в виде класса AppleScriptObjC и вызвать обработчики / методы, подобные обычному Objective-C. См. эту страницу для получения инструкций (и пример проекта) и Замечания к выпуску ASObjC для соглашений об именах.

0 голосов
/ 24 февраля 2012

Я не уверен, как вы берете аргументы в сценарии, но посмотрите на этот пост для получения информации о создании AEMEvent, присоединении к нему параметров и последующей отправке сценарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...