2010-07-08 2 views
4

Quelqu'un peut-il montrer un exemple rapide sur la façon d'utiliser NSTask et NSPipe conjointement pour ce faire:NSTask et NSPipe exemple pour communiquer avec la ligne de commande objective-c

Charlie AI - courir à travers le terminal pour communiquer avec l'IA

Je veux créer une belle interface graphique pour elle en utilisant xcode et l'objectif c. Je veux avoir 2 NSTextFields pour la réponse de charlie et l'entrée de l'utilisateur. Ensuite, ayez un bouton d'envoi pour envoyer l'entrée de l'utilisateur à la ligne de commande, puis récupérez la réponse de charlie et postez-la dans le NSTextField.

Je peux gérer les choses de l'interface graphique (NSTextField, ect.) Mais j'ai besoin d'aide pour la partie de codage de l'objectif-c.

Merci!

Elijah

Répondre

4

Apple ont un code agréable exemple qui montre comment faire plus de cette ... http://developer.apple.com/mac/library/samplecode/Moriarity/

TaskWrapper.m contient tous les trucs intelligents, mais puisque vous voulez être en mesure pour envoyer des données à la tâche, vous aurez besoin de prolonger un peu, comme si:

[task setStandardInput: [NSPipe pipe]];

pour envoyer ta contribution au sk, vous pouvez alors faire:

[[[task standardInput] fileHandleForWriting] writeData: ...];

Pour activer la valeur de la NSTextField en données, vous pouvez faire quelque chose comme ceci:

NSData *data = [[inputTextField stringValue] dataUsingEncoding:NSUTF8StringEncoding];

... et pour définir le répertoire de travail courant pour votre sous-tâche, utilisez [NSTask setCurrentDirectoryPath:]

[task setCurrentDirectoryPath:@"/blah/blah"]; 
[task setLaunchPath:@"/blah/blah/server.sh"]; 

.... (other setup code) 

[task launch]; 
+0

1 chose ... comment pourrais-je envoyer "cd/bla/bla" puis "./server.sh" pour commencer charlie? – objectiveccoder001

+0

Mis à jour ma réponse pour montrer comment faire cela ... espérons que cela aide :-) –

+0

Aussi, comment obtenir les données du terminal après avoir envoyé quelque chose? Je suis confus avec la façon dont la moralité le fait. – objectiveccoder001

Questions connexes