2010-04-29 5 views
13

Non so cosa mi manca qui. Sto cercando di concatenare le stringhe usando la funzione [NSString stringWithFormat]. Questo è quello che sto facendo.NSString stringWithFormat

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

Il problema qui è che è sempre stampare solo una variabile. Dì se c'è "Sport" nella categoria e "Leo" nel logonUtente stamperà "In Sports" e salterà il testo rimanente. Dovrebbe stampare "In Sports by Leo".

+0

Dov'è la dichiarazione per categoria? Assicurati che sia un NSString * e non qualcos'altro. – lucius

risposta

15

È user un UILabel? Assicurati che il tuo testo non sia avvolto o tagliato. Prova a rendere UILabel più grande.

0

Qual è il punto per la prima riga in questo codice? Sembra non correlato alla terza linea?

Sei sicuro al 100% che sia la categoria che l'utente di accesso siano compilati nel codice? Forse metti una dichiarazione NSLog subito dopo user.text = line e assicurati che abbiano i valori che ti aspetti, perché la tua terza linea sembra soddisfacente.

Modifica

Vorrei provare a cambiare

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

a

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

e vedere se uscite In category by logonUser. Perché sicuramente sembra corretto per me.

+0

Mi dispiace per l'errore. La dichiarazione di categoria è sotto. Ho copiato accidentalmente la linea sbagliata. NSString * category = [row objectForKey: @ "category"]; Sì, ho provato NSLog e sono popolati. Qualche idea? – Leo

1

Il codice è corretto:

Per caso sono u ottenere un ritorno a capo o spazi vuoti nella variabile categoria? Nel caso di una piccola etichetta, potrebbe non visualizzare la stringa completa. Prova a scambiare le due variabili nella terza riga e vedere qual è l'output.

Sono sconcertato che anche il "by" manca all'uscita. Ho la sensazione che il valore della variabile di categoria stia mascherando il testo.

+0

La tua risposta copre tutti i problemi incontrati dall'avviatore filo. Non so perché la tua risposta non sia contrassegnata come risposta corretta o almeno con lo svantaggio ... – winklerrr

5

Hai bisogno di provare:

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

Per controllare il problema! Fammi sapere i risultati sulla console di debugger XD

+0

Buon suggerimento. Ho provato NSLog e viene stampato in due righe. Penso che la categoria abbia un ritorno a capo. Come posso rimuovere il ritorno a capo e gli spazi inutili intorno? Grazie – Leo

+0

Ci scusiamo per la risposta tardiva! È possibile utilizzare questo -> - (NSString *) substringWithRange: (NSRange) arange E per la gamma si può fare questo -> NSRange * myRange = NSRangeMake (x, y); –