NSString stringWithFormat - PullRequest
       7

NSString stringWithFormat

14 голосов
/ 29 апреля 2010

Я не знаю, что мне здесь не хватает. Я пытаюсь объединить строки с помощью функции [NSString stringWithFormat]. Это то, что я делаю.

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

Проблема здесь в том, что он всегда печатает только одну переменную. Скажем, если в категории есть «Спорт» и «Лео» в logonUser, будет напечатано «В спорте» и пропущен оставшийся текст. На нем должно быть напечатано «In Sports by Leo».

Ответы [ 4 ]

15 голосов
/ 30 апреля 2010

Является ли user UILabel? Убедитесь, что ваш текст не обернут и не обрезан. Попробуйте увеличить UILabel.

6 голосов
/ 30 апреля 2010

Вам нужно попробовать:

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

Чтобы проверить проблему! Дайте мне знать результаты на консоли отладчика XD

1 голос
/ 30 апреля 2010

Код выглядит правильно:

Вы случайно не получаете возврат каретки или лишние пробелы в переменной категории? В случае небольшой метки может не отображаться полная строка. Попробуйте поменять местами две переменные в третьей строке и посмотрите, что получится.

Я сбит с толку, что даже «по» отсутствует на выходе. У меня такое ощущение, что значение переменной категории маскирует текст.

0 голосов
/ 29 апреля 2010

Какой смысл для первой строки в этом коде? Кажется, не имеет отношения к 3-й строке?

Вы на 100% уверены, что категория и logonUser заполнены в коде? Возможно, поместите оператор NSLog сразу после строки user.text = и убедитесь, что у них есть ожидаемые значения, потому что ваша третья строка выглядит хорошо.

Редактировать

Я бы попробовал изменить

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

до

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

и посмотрите, выводит ли это In category by logonUser. Потому что для меня это выглядит правильно.

...