2010-07-02 10 views
1

J'ai une fonction qui envoie une chaîne "theData". Je veux insérer cette chaîne ici dans ce code. Est-ce que quelqu'un pourrait me dire la syntaxe correcte pour cela? Les choses deviennent un peu poilues avec les "s et les". Merci!Comment insérer des données dans une chaîne d'AppleScript

NSTask *task; 
task = [[NSTask alloc] init]; 
[task setLaunchPath:@"/usr/bin/osascript"]; 
[task setArguments:[NSArray arrayWithObjects:@"-e", @"tell application \"System Events\"\n", 
              @"-e", @" keystroke \"" + theData + "\"", 
              @"-e", @"end tell", nil]]; 
[task launch]; 
+0

Il y a probablement une bien meilleure façon de simuler des frappes avec Objective-C ... – icktoofay

+3

Et en fait, il semble qu'il y en ait. (http://stackoverflow.com/questions/2379867/) – icktoofay

+0

woah. Merci mec. –

Répondre

1

icktoofay a déjà donné la réponse plus juste, mais permettez-moi de montrer à quel point d'insérer une chaîne dans une chaîne:

 NSString* toBeInserted = @"for"; 
     NSString* result = [NSString stringWithFormat:@"in%@mation",toBeInserted]; 
     NSLog(@"%@",result); 

Cela donne information. Pour plus de détails, lire Apple's doc. Je veux dire, le doc d'Apple est plutôt bon, en fait. Lisez-le avant de poser une question ici à SO. Par ailleurs, vous n'avez pas à lancer osascript pour exécuter AppleScript. Vous pouvez utiliser NSAppleScript comme dans

NSAppleScript* script=[[NSAppleScript alloc] initWithSource:@"tell app \"Finder\" to activate "]; 
NSDictionary*error; 
[script executeAndReturnError:&error]; 
[script release]; 

Eh bien, NSAppleScript est une bizarrerie qui exige NSDictionary, pas NSError, signaler une erreur ...

Ou, vous pouvez utiliser Scripting Bridge pour cartographier les objets AppleScript à Objectif -C objets.

0

Je vois que vous avez une autre façon de le faire, mais vous pouvez utiliser des chaînes de format pour accomplir cette

[NSString stringWIthFormat: @"part one %@ part 2", theData]; 

Si l'on suppose que les données sont un NSString contenant « bonjour », cela vous donnera:

@"part one hello part 2" 
Questions connexes