Je veux utiliser une ligne de commande avec un argument pour appeler mon application de cacao, mais dans mon application de cacao, comment recevoir l'argument, cet argument est un chemin de fichier, merci beaucoup!Comment appeler une application de cacao à partir de la ligne de commande à l'extérieur?
Répondre
Neat chose: utiliser NSUserDefaults
.
Si vous faites:
./MyCocoaApp -argument /path/to/file.txt
Ensuite, dans votre code que vous pouvez faire:
NSDictionary * arguments = [[NSUserDefaults standardUserDefaults] volatileDomainForName:NSArgumentDomain];
NSString * path = [arguments objectForKey:@"argument"];
Le key
est le commutateur -argument
, et la valeur est la chose qui vient après. Notez que ceci n'est pas très flexible (vous ne pouvez pas faire d'options combinées: -a -l
≠ -al
), mais pour les arguments rudimentaires, c'est très simple.
modifier avec de multiples arguments:
./MyCocoaApp -arg1 42 -arg2 "Hello, world!" -arg3 /path/to/file.txt
Et puis extrait via:
... = [arguments objectForKey:@"arg1"];
... = [arguments objectForKey:@"arg2"];
... = [arguments objectForKey:@"arg3"];
La fonction principale normale dans Cocoa passe les arguments de ligne de commande pour NSApplicationMain. Les arguments sont ignorés par NSApplicationMain, mais vous êtes libre de les analyser au besoin. Il existe plusieurs méthodes standard pour analyser les arguments de ligne de commande, comme getopt, ou vous pouvez simplement accéder aux valeurs directement.
int main(int argc , char **argv) {
if (argc == 2) gPathArgument = argv[1];
NSApplicationMain(argc , argv);
}
Notez que des services de lancement peuvent passer des arguments de ligne de commande lorsqu'une application est ouverte normalement, par exemple lors d'un double clic dans le Finder. Veillez à gérer les arguments non reconnus.
Dans le cas particulier d'un chemin de fichier à un fichier existant, vous pouvez utiliser open
comme ceci:
open -a /path/to/your.app /path/to/the/file
Et puis mettre en œuvre dans votre délégué de l'application:
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename;
- 1. Comment exécuter une application NetBeans compilée de manière incrémentielle à partir de la ligne de commande?
- 2. Comment puis-je déployer une application sur mon iPhone à partir de la ligne de commande?
- 3. Comment déployez-vous une application iPhone sur le simulateur à partir de la ligne de commande?
- 4. Comment appeler un assistant Visual Studio personnalisé à partir de la ligne de commande?
- 5. Comment appeler les fonctions MATLAB à partir de la ligne de commande Linux?
- 6. Comment créer SQLite3 à partir de la ligne de commande?
- 7. Comment appeler une application shell à partir de SQL storedprocedure?
- 8. envoyer des valeurs à partir de la ligne de commande?
- 9. appel javascript à partir de cacao
- 10. Ajouter une fonction à un programme et appeler cette fonction à partir de la ligne de commande dans la fonction
- 11. SWT & JFace à partir de la ligne de commande
- 12. Télécharger un fichier dans une application Rails à partir d'une application de ligne de commande Ruby
- 13. Filigrane vidéo à partir de la ligne de commande Linux
- 14. utilitaire de ligne de commande Python à partir de Java
- 15. Exécution groovy à partir de la ligne de commande
- 16. Comment appeler une invite de commande permanente?
- 17. compiler java à partir de la ligne de commande
- 18. Perl exécution à partir de la ligne de commande question
- 19. Contrôlez iTunes à partir d'une application de cacao
- 20. Exécution d'un Zend_Application à partir de la ligne de commande?
- 21. Résolution automatique Perforce à partir de la ligne de commande?
- 22. Publier sur RSS à partir de la ligne de commande
- 23. Rubygems plus faciles à partir de la ligne de commande?
- 24. Création et signature de code d'une application iPhone à partir de la ligne de commande
- 25. texte complexe remplacer à partir de la ligne de commande
- 26. Publier ClickOnce à partir de la ligne de commande
- 27. Version d'assemblage à partir de la ligne de commande?
- 28. cvs checkout à partir de la ligne de commande Windows
- 29. a commencé à partir de la ligne de commande?
- 30. Exécuter garbage collector à partir de la ligne de commande?
ok, tout d'abord merci beaucoup. et si la ligne de commande avec deux ou trois arguments, et comment l'utiliser, merci encore! – jin
@jin a modifié sa réponse –
+1 Tour cool! –