2010-04-29 15 views
13

No sé lo que me falta aquí. Estoy tratando de concatenar cadenas usando la función [NSString stringWithFormat]. Esto es lo que estoy haciendo.NSString stringWithFormat

NSString *category = [row objectForKey:@"category"]; 
NSString *logonUser = [row objectForKey:@"username"]; 
user.text = [NSString stringWithFormat:@"In %@ by %@", category, logonUser]; 

El problema aquí es que siempre imprime una sola variable. Decir si hay "Deportes" en la categoría y "Leo" en el inicio de sesión Usuario imprimirá "En Deportes" y se saltará el texto restante. Debería imprimir "In Sports by Leo".

+0

¿Dónde está la declaración para la categoría? Asegúrate de que sea un NSString * y no algo más. – lucius

Respuesta

15

Es un user UILabel? Asegúrese de que su texto no esté recortado o recortado. Intenta hacer el UILabel más grande.

0

Cuál es el punto de la primera línea en el código? Parece no relacionado con la 3ª línea?

¿Estás 100% seguro de que tanto la categoría y LOGONUSER se rellenan en el código? Quizás coloque una declaración NSLog justo después de la línea user.text = y asegúrese de que tengan los valores que espera porque su tercera línea se ve bien.

Editar

Me gustaría tratar de cambiar

user.text = [NSString stringWithFormat:@"In %@ by %@", category, logonUser]; 

a

user.text = [NSString stringWithFormat:@"In %@ by %@", @"category", @"logonUser"]; 

y ver si se da salida a In category by logonUser. Porque seguro me parece correcto.

+0

Disculpa el error. La declaración de la categoría está debajo. Accidentalmente copié la línea incorrecta. NSString * category = [row objectForKey: @ "category"]; Sí, he probado NSLog y están completos. ¿Alguna idea? – Leo

1

El código es correcto:

Por casualidad son u obtener un retorno de carro o un espacio vacío adicional en la categoría de variable? En el caso de una etiqueta pequeña, es posible que no muestre la cadena completa. Intente intercambiar las dos variables en la tercera línea y vea cuál es el resultado.

Estoy sorprendido de que incluso el "por" no se encuentra en la salida. Tengo la sensación de que el valor de la variable de categoría enmascara el texto.

+0

Su respuesta cubre todos los problemas con los que se encontró el iniciador de subprocesos. No sé por qué su respuesta no está marcada como respuesta correcta o al menos votada ... – winklerrr

5

Es necesario intentar:

NSlog(@"In %@ by %@", category, logonUser); 

para comprobar el problema! Déjame saber los resultados en la consola depurador XD

+0

Buena sugerencia. Intenté NSLog y está siendo impreso en dos líneas. Creo que la categoría tiene retorno de carro. ¿Cómo puedo eliminar el retorno de carro y espacios innecesarios? Gracias – Leo

+0

Perdón por la respuesta tardía! Puede utilizar este -> - (NSString *) substringWithRange: (NSRange) ARANGE Y para la gama que puede hacer esto -> NSRange * myRange = NSRangeMake (x, y); –

Cuestiones relacionadas