NSString stringWithFormat

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

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

Проблема заключается в том, что она всегда печатает только одну переменную. Скажем, есть ли "Спорт" в категории и "Лев" в logonUser, он напечатает "In Sports" и пропустит оставшийся текст. Он должен напечатать "В спорте по Льву".

Ответы

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

В чем смысл первой строки в этом коде? Кажется, он не связан с третьей строкой?

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

Edit

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

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

к

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

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