2011-11-23 8 views
7

Quiero una entrada del usuario a su nombre y la salida de ese nombre de entrada en NSLog utilizando NSString. No sé qué signo% y cómo generarlo. ¿Puedo usar la función scanf() para eso? Por favor, ayúdenme, solo soy principiante de Objective-C.¿Cómo se genera el tipo NSString en la función NSLog en Objective-C?

+0

Ver [cadena de especificadores de formato] (http://developer.apple.com/library/IOs/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html) en la documentación. – Anna

Respuesta

23

Puede usar% @ para todos los objetos, incluido NSString. Esto a su vez llamará al método de los objetos description e imprimirá la cadena apropiada. La mayoría de los objetos ya tienen una representación bastante útil (por ejemplo, los objetos NSArray devuelven las descripciones de todos sus contenidos).

+0

¿Te gusta? NSLog ("% @", nombre); ? –

+5

Sí, 'NSLog ("% @ ", nombre); 'funcionaría. – progrmr

1

%@ es lo que quiere. Cupo para objeto como NSString, [YourViewController class]

1

NSLog acepta una cadena de formato, por lo que puede hacer algo como esto:

#include <stdio.h> 
#include <Foundation/Foundation.h> 

// 1024 characters should be enough for a name. 
// If you want something more flexible, you can use GNU readline: 
// <http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html> 
#define MAX_NAME_LENGTH 1024 

// Get name from user input 
char name[MAX_NAME_LENGTH]; 
name[0] = '\0'; // just in case fgets fails 
fgets(name, MAX_NAME_LENGTH, stdin); 

// Put name into NSString object and output it. 
NSString *name = [NSString stringWithUTF8String:name]; 
NSLog(@"%@", name); 

%@ obras para todos los objetos de Objective-C. Si desea generar una C-string (char* o const char*), use %s. Nunca coloque una cadena no literal como primer argumento en NSLog ya que esto abre agujeros de seguridad.

+0

jeje! Solo quiero NSString de User Input. No es Char y muestra ese NSString. Y tampoco quiero convertirlo a NSString. Puedo hacerlo así. Solo soy principiante. Explícame por favor. :) –

+0

No puede obtener un NSString directamente desde la entrada estándar (suponiendo que lo desee). Puedes hacerlo usando 'NSFileHandle' y' NSData' si quieres, pero directamente usando 'NSString' no es posible. Consulte http://caiustheory.com/read-standard-input-using-objective-c para ver un ejemplo. –

+0

¡ah! Lo sé . por lo que no podemos obtener entrada de cadena directamente. EN C# .Net podemos usar Console.ReadLine(); . Pero en OBJC. no podemos obtener :(Gracias por sus respuestas –

0

Para obtener información del usuario, utilice un UITextField o un NSTextField. A la salida de una cadena en el archivo de registro se puede utilizar NSLog, es decir:

NSString* userName = @"Zawmin"; 

NSLog(@"name = %@", userName); 
+0

O un NSTextField si usa Cocoa –

+0

Ahora estoy usando la entrada de la Consola de los usuarios. ¿Cómo puedo hacer eso? –

+0

@Zawmin vea mi respuesta. Utiliza fgets para obtener un C-string del usuario entrada. Luego lo convierte a NSString para salida usando NSLog. –

3

Marcos Dylan es el nombre que se almacena en la variable Nombre.

NSString* Name = @"Mark Dylan"; 

Este código le permitirá preguntar su nombre y escanearlo en la memoria que se almacenará en la variable Nombre.

NSLog("What is your name?"); 
scanf("%@", &Name); 

Si desea imprimir la variable que puede utilizar;

NSLog("Your name is %@", Name); 
Cuestiones relacionadas