stringByAppendingFormat не работает

У меня есть NSString и я не могу применить следующее утверждение:

NSString *myString = @"some text";
[myString stringByAppendingFormat:@"some text = %d", 3];

нет журнала или ошибки, строка просто не меняется. Я уже пробовал с NSString (как задокументировано) и NSMutableString.

любые подсказки приветствуются.


person Community    schedule 11.05.2010    source источник


Ответы (4)


Я бы предложил исправить на (документация):

NSString *myString = @"some text";
myString = [myString stringByAppendingFormat:@" = %d", 3];

Из документов:

Возвращает строку, созданную путем добавления к получателю строки, созданной из заданной строки формата и следующих аргументов.

person Paul Lynch    schedule 11.05.2010

Это работает, вы просто игнорируете возвращаемое значение, которое представляет собой строку с добавленным форматом. (См. документы.) Вы не можете изменить NSString — чтобы изменить NSMutableString, используйте -appendFormat: вместо этого.

Конечно, в вашем игрушечном примере вы можете сократить его до этого:

NSString *myString = [NSString stringWithFormat:@"some text = %d", 3];

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

person Quinn Taylor    schedule 11.05.2010

Создание строк с @"" всегда приводит к неизменяемым строкам. Если вы хотите создать новую NSMutableString, сделайте это следующим образом.

NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];
person stigi    schedule 11.05.2010

У меня было похожее предупреждающее сообщение при добавлении локализованной строки. Вот как я это решил

NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")];
person Pranam Shetty    schedule 25.08.2012
comment
Если у вас действительно нет формата для добавления, лучше использовать -stringByAppendingString: вместо этого. - person Extra Savoir-Faire; 03.10.2012