NSString stringWithFormat

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

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

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


person Leo    schedule 29.04.2010    source источник
comment
Где декларация категории? Убедитесь, что это NSString *, а не что-то еще.   -  person lucius    schedule 29.04.2010


Ответы (4)


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

person lucius    schedule 29.04.2010

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

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

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

person Ivan Carosati    schedule 29.04.2010
comment
Хорошее предложение. Я попробовал NSLog, и он печатается в две строки. Я думаю, что в категории есть возврат каретки. Как убрать возврат каретки и лишние пробелы вокруг? Спасибо - person Leo; 01.05.2010
comment
Извините за задержку с ответом! Вы можете использовать это - ›- (NSString *) substringWithRange: (NSRange) aRange А для диапазона вы можете сделать это -› NSRange * myRange = NSRangeMake (x, y); - person Ivan Carosati; 06.05.2010

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

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

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

person Bharat Ahluwalia    schedule 29.04.2010
comment
Ваш ответ охватывает все проблемы, с которыми столкнулся автор темы. Я не знаю, почему ваш ответ не помечен как правильный или, по крайней мере, не одобрен ... - person winklerrr; 23.11.2015

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

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

Изменить

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

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

to

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

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

person jamone    schedule 29.04.2010
comment
Извините за ошибку. Объявление категории ниже. Я случайно скопировал не ту строку. NSString * category = [строка objectForKey: @category]; Да, я пробовал NSLog, и они заполнены. Любая идея? - person Leo; 30.04.2010