2009-08-07 8 views
4

Ce que je fais est l'exécution d'un AppleScript dans Cocoa. Elle retourne des données comme des impressions NSAppleEventDescriptor, qui NSLog() comme ceci:Comment faire pour extraire des données AppleScript à partir d'un NSAppleEventDescriptor dans Cocoa et l'analyser

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

Je veux prendre ces données et le transformer en un NSDictionary ou NSArray, ou quelque chose d'utile je peux extraire des choses de lui (en particulier je suis après le champ détenant le numéro "69671872"). Il semble être un tableau de quelque sorte, mais ma connaissance avec Apple Events est assez limitée. Une idée sur la façon de faire cela?

est ici la source la création des données ci-dessus:

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

Merci d'avance pour toute aide! :)

Répondre

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

Merci beaucoup! :) Cela a l'air trop facile. Je pense que j'ai beaucoup à apprendre. ;) –

+0

@Peter Hosey Merci pour le remplacement constant (j'aurais dû attraper ça). – Wevah

2

C'est un record, pas une liste. Essayez descriptorForKeyword:, en passant la constante correspondant au code à quatre caractères que vous voulez. (Les constantes sont déclarées dans les en-têtes Apple Events.)

+0

Ah, parfait. Merci beaucoup! :) –

Questions connexes