Как извлечь данные AppleScript из NSAppleEventDescriptor в Какао и проанализировать их

То, что я делаю, это выполнение AppleScript внутри Какао. Он возвращает некоторые данные в виде NSAppleEventDescriptor, который NSLog() печатает следующим образом:

<NSAppleEventDescriptor: 'obj '{ 'form':'name', 'want':'dskp', 'seld':'utxt'("69671872"), 'from':'null'() }>

Я хочу взять эти данные и превратить их в NSDictionary или NSArray, или что-то полезное, чтобы я мог извлечь из них вещи (в частности, я после поля, содержащего число "69671872"). Кажется, это какой-то массив, но мои знания об Apple Events довольно ограничены. Есть идеи, как это сделать?

Вот источник, создающий вышеуказанные данные:

NSString *appleScriptSource = [NSString stringWithFormat:@"tell application\"System Events\"\n return desktop 1\n end tell"];
NSDictionary *anError;
NSAppleScript *aScript = [[NSAppleScript alloc] initWithSource:appleScriptSource];
NSAppleEventDescriptor *aDescriptor = [aScript executeAndReturnError:&anError];

NSLog (@"%@", aDescriptor);
[aScript release];

Заранее благодарю за любую помощь!:)

3 ответа

Решение
[[aDescriptor descriptorForKeyword:keyAEKeyData] stringValue]

Это запись, а не список. Пытаться descriptorForKeyword:, передавая константу, соответствующую желаемому четырехзначному коду. (Константы объявлены в заголовках Apple Events.)

Мне не удалось заставить решение Питера Хози работать с моим списком AppleScript, обернутым как NSAppleEventDescriptor. Вместо этого я пришел к следующему решению, которое преобразует список в массив ObjC:

                 NSAppleEventDescriptor *listDescriptor = [result coerceToDescriptorType:typeAEList];
           NSMutableArray *thisArray = [[NSMutableArray alloc] init];
           for (NSInteger i = 1; i <= [listDescriptor numberOfItems]; ++i) {
               NSAppleEventDescriptor *stringDescriptor = [listDescriptor descriptorAtIndex:i];
               [thisArray addObject: stringDescriptor.stringValue];
           }
           NSLog(@"array result: %@", thisArray);
Другие вопросы по тегам