stringByAppendingFormat не работает - PullRequest
12 голосов
/ 11 мая 2010

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

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

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

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

Ответы [ 4 ]

35 голосов
/ 11 мая 2010

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

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

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

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

12 голосов
/ 11 мая 2010

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

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

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

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

11 голосов
/ 11 мая 2010

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

NSMutableString *myString = [NSMutableString stringWithString:@"some text"];
[myString appendFormat:@"some text = %d", 3];
0 голосов
/ 26 августа 2012

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

NSString *msgBody = [msgBody stringByAppendingFormat:@"%@",NSLocalizedString(@"LOCALSTRINGMSG",@"Message Body")];
...