framework español objective-c cocoa-touch

objective c - español - ¿Cómo debo pasar un int en stringWithFormat?



cocoa touch español (10)

¿El fragmento que publicó es solo una muestra para mostrar lo que está tratando de hacer?

La razón por la que pregunto es que ha nombrado un increment método, pero parece que lo está usando para establecer el valor de una etiqueta de texto, en lugar de incrementar un valor.

Si intenta hacer algo más complicado, como establecer un valor entero y hacer que la etiqueta muestre este valor, podría considerar usar enlaces. p.ej

Usted declara un count propiedades y su acción de increment establece este valor en lo que sea, y luego en IB, vincula el texto de la etiqueta con el valor de count . Siempre que siga la codificación de valor clave (KVC) con count , no es necesario que escriba ningún código para actualizar la visualización de la etiqueta. Y desde una perspectiva de diseño, tienes un acoplamiento más flexible.

Intento usar stringWithFormat para establecer un valor numérico en la propiedad de texto de una etiqueta pero el siguiente código no está funcionando. No puedo convertir int en NSString. Esperaba que el método supiera cómo convertir automáticamente un int a NSString.

¿Qué debo hacer aquí?

- (IBAction) increment: (id) sender { int count = 1; label.text = [NSString stringWithFormat:@"%@", count]; }


Desea usar %d o %i para enteros. %@ se usa para objetos.

Vale la pena señalar, sin embargo, que el siguiente código realizará la misma tarea y es mucho más claro.

label.intValue = count;


Hacer esto:

label.text = [NSString stringWithFormat:@"%d", count];


Marc Charbonneau escribió:

Tenga en cuenta que @ "% d" solo funcionará en 32 bits. Una vez que comience a usar NSInteger para compatibilidad si alguna vez compila para una plataforma de 64 bits, debe usar @ "% ld" como su especificador de formato.

Interesante, gracias por la sugerencia, estaba usando @ "% d" con mi NSInteger s!

La documentación de SDK también recomienda lanzar NSInteger a long en este caso (para que coincida con @ "% ld"), por ejemplo:

NSInteger i = 42; label.text = [NSString stringWithFormat:@"%ld", (long)i];

Fuente: Guía de programación de cadenas para Cocoa - Especificadores de formato de cadena (requiere el registro de desarrollador de iPhone)


No olvides por long long int :

long long int id = [obj.id longLongValue]; [NSString stringWithFormat:@"this is my id: %lld", id]


Para ser seguro de 32 bits y de 64 bits, use una de las expresiones encuadradas :

label.text = [NSString stringWithFormat:@"%@", @(count).stringValue];


Tenga en cuenta que @ "% d" solo funcionará en 32 bits. Una vez que comience a usar NSInteger para compatibilidad si alguna vez compila para una plataforma de 64 bits, debe usar @ "% ld" como su especificador de formato.


Y para el valor cómico:

label.text = [NSString stringWithFormat:@"%@", [NSNumber numberWithInt:count]];

(Aunque podría ser útil si algún día estás tratando con NSNumber)


NSString * formattedname; NSString * firstname; NSString * middlename; NSString * lastname; firstname = @"My First Name"; middlename = @"My Middle Name"; lastname = @"My Last Name"; formattedname = [NSString stringWithFormat:@"My Full Name: %@ %@ %@", firstname, middlename, lastname]; NSLog(@"/n/nHere is the Formatted Name:/n%@/n/n", formattedname); /* Result: Here is the Formatted Name: My Full Name: My First Name My Middle Name My Last Name */


label.text = [NSString stringWithFormat:@"%d", XYZ]; //result: label.text = XYZ //use %d for int values