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")];