Argumentos de la línea de comandos

Es posible pasar algunos valores de la línea de comando a sus programas Objective-C cuando se ejecutan. Estos valores se llamancommand line arguments y muchas veces son importantes para su programa, especialmente cuando desea controlar su programa desde fuera en lugar de codificar esos valores dentro del código.

Los argumentos de la línea de comando se manejan usando argumentos de la función main () donde argc se refiere al número de argumentos pasados, y argv[]es una matriz de punteros, que apunta a cada argumento que se pasa al programa. A continuación se muestra un ejemplo simple, que verifica si hay algún argumento proporcionado desde la línea de comando y toma las medidas correspondientes:

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   if( argc == 2 ) {
      NSLog(@"The argument supplied is %s\n", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"Too many arguments supplied.\n");
   } else {
      NSLog(@"One argument expected.\n");
   }
}

Cuando el código anterior se compila y ejecuta con un solo argumento, diga "prueba", produce el siguiente resultado.

2013-09-13 03:01:17.333 demo[7640] The argument supplied is testing

Cuando el código anterior se compila y ejecuta con dos argumentos, digamos testing1 y testing2, produce el siguiente resultado.

2013-09-13 03:01:18.333 demo[7640] Too many arguments supplied.

Cuando el código anterior se compila y ejecuta sin pasar ningún argumento, produce el siguiente resultado.

2013-09-13 03:01:18.333 demo[7640] One argument expected

se debe notar que argv[0] contiene el nombre del programa y argv[1]es un puntero al primer argumento de línea de comandos proporcionado, y * argv [n] es el último argumento. Si no se proporcionan argumentos, argc será uno; de lo contrario, si pasa un argumento, entoncesargc se fija en 2.

Pasas todos los argumentos de la línea de comando separados por un espacio, pero si el argumento en sí tiene un espacio, entonces puedes pasar dichos argumentos poniéndolos entre comillas dobles "" o comillas simples ". Reescribamos el ejemplo anterior una vez más, donde imprimiremos el nombre del programa y también pasamos un argumento de línea de comandos poniendo entre comillas dobles:

#import <Foundation/Foundation.h>

int main( int argc, char *argv[] ) {
   NSLog(@"Program name %s\n", argv[0]);
 
   if( argc == 2 ) {
      NSLog(@"The argument supplied is %s\n", argv[1]);
   } else if( argc > 2 ) {
      NSLog(@"Too many arguments supplied.\n");
   } else {
      NSLog(@"One argument expected.\n");
   }
   
   return 0;
}

Cuando el código anterior se compila y ejecuta con un solo argumento separado por un espacio pero entre comillas dobles dice "Testing1 Testing2", produce el siguiente resultado.

2017-11-30 06:36:59.081 main[71010] Program name main
2017-11-30 06:36:59.082 main[71010] One argument expected.