StringByAppendingFormat не работает
У меня есть NSString и не могу применить следующий оператор:
NSString *myString = @"some text";
[myString stringByAppendingFormat:@"some text = %d", 3];
нет журнала или ошибки, строка просто не изменяется. Я уже пробовал с NSString (как задокументировано) и NSMutableString.
любые подсказки наиболее приветствуются.
Ответы
Ответ 1
Я бы предложил исправление (documentation):
NSString *myString = @"some text";
myString = [myString stringByAppendingFormat:@" = %d", 3];
Из документов:
Возвращает строку, создаваемую добавлением к получателю строки, построенной из заданной строки формата, и следующих аргументов.
Ответ 2
Он работает, вы просто игнорируете возвращаемое значение, которое является строкой с приложенным форматом. (См. документы.) Вы не можете изменить NSString - для изменения NSMutableString используйте - appendFormat: вместо этого.
Конечно, в вашем примере игрушек вы могли бы сократить его до этого:
NSString *myString = [NSString stringWithFormat:@"some text = %d", 3];
Однако, вероятно, вам нужно добавить строку формата в существующую строку, созданную в другом месте. В этом случае, особенно если вы добавляете несколько частей, хорошо подумать и сбалансировать плюсы и минусы использования изменяемой строки или нескольких неизменяемых строк с автореализацией.
Ответ 3
Создание строк с помощью @""
всегда приводит к неизменяемым строкам. Если вы хотите создать новую NSMutableString, выполните следующие действия.
NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];
Ответ 4
У меня было подобное предупреждающее сообщение, добавив локализованную строку. Вот как я его разрешил.
NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")];