2010-04-29 21 views
13

Je ne sais pas ce qui me manque ici. J'essaye de concaténer des chaînes utilisant la fonction [NSString stringWithFormat]. C'est ce que je fais.NSString stringWithFormat

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

Le problème ici est qu'il imprime toujours une seule variable. Dites s'il y a "Sports" dans la catégorie et "Leo" dans logonUser, il imprimera "In Sports" et passera le texte restant. Il devrait imprimer "In Sports by Leo".

+0

Où est la déclaration pour la catégorie? Assurez-vous que c'est un NSString * et pas autre chose. – lucius

Répondre

15

Est-ce que user est un UILabel? Assurez-vous que votre texte n'est pas enveloppé ou coupé. Essayez d'agrandir UILabel.

0

Quel est le point de la première ligne de ce code? Cela semble sans rapport avec la 3ème ligne?

Êtes-vous sûr à 100% que la catégorie et le logonUser sont remplis dans le code? Peut-être mettre une déclaration NSLog juste après la ligne user.text = et assurez-vous qu'ils ont les valeurs que vous attendez parce que votre 3ème ligne semble bien.

Modifier

Je voudrais essayer de changer

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

à

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

et voir si cela sorties In category by logonUser. Parce que ça me semble correct.

+0

Désolé pour l'erreur. La déclaration de catégorie est ci-dessous. J'ai accidentellement copié la mauvaise ligne. NSString * category = [ligne objetForKey: @ "catégorie"]; Oui, j'ai essayé NSLog et ils sont remplis. Une idée? – Leo

1

Le code semble correct:

par hasard sont u obtiennent un retour chariot ou espace blanc supplémentaire dans la variable de catégorie? Dans le cas d'une petite étiquette, il peut ne pas afficher la chaîne complète. Essayez d'échanger les deux variables dans la troisième ligne et voir ce que la sortie est.

Je suis perplexe que même le "par" est absent de la sortie. J'ai le sentiment que la valeur de la variable de catégorie masque le texte.

+0

Votre réponse couvre tous les problèmes rencontrés par le démarreur de fil. Je ne sais pas pourquoi votre réponse n'est pas marquée comme réponse correcte ou au moins upvoted ... – winklerrr

5

Vous devez essayer:

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

Pour vérifier le problème! Faites-moi savoir les résultats sur la console de débogage XD

+0

Bonne suggestion. J'ai essayé NSLog et il est imprimé en deux lignes. Je pense que la catégorie a un retour chariot. Comment puis-je supprimer le retour chariot et les espaces inutiles autour? Merci – Leo

+0

Désolé pour la réponse tardive! Vous pouvez l'utiliser -> - (NSString *) substringWithRange: (NSRange) aRange Et pour la plage, vous pouvez le faire -> NSRange * myRange = NSRangeMake (x, y); –