2009-08-07 1 views
4

Что я делаю, это выполнение AppleScript внутри Cocoa. Она возвращает некоторые данные как NSAppleEventDescriptor, который NSLog() печатает так:Как извлечь данные AppleScript из NSAppleEventDescriptor в Cocoa и проанализировать его

<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]; 

Спасибо заранее за любую помощь! :)

ответ

2
[[aDescriptor descriptorForKeyword:keyAEKeyData] stringValue] 
+0

Большое спасибо! :) Это выглядит слишком легко. Я думаю, мне нужно многому научиться. ;) – 2009-08-08 18:43:06

+0

@Peter Hosey Спасибо за постоянную замену (я должен был это поймать). – Wevah

2

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

+0

Ах, отлично. Спасибо! :) – 2009-08-08 18:43:37

Смежные вопросы