Невозможно добавить строку NSMutableString - ошибка

У меня есть следующий код

NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init];
NSMutableString *imobileNumberValue=[[NSMutableString alloc]init];
ibmcountryCodeLabel=@"555";
imobileNumberValue=@"333";
NSLog(@"Done1");
[ibmcountryCodeLabel appendString:imobileNumberValue];
NSLog(@"Done2");

Хотя обе строки являются изменяемыми, когда я пытаюсь добавить одну к другой, я получаю «Завершение приложения из-за неперехваченного исключения 'NSInvalidArgumentException', причина: 'Попытка изменить неизменяемый объект с помощью appendString:'»

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


person Timothy Rajan    schedule 25.11.2013    source источник


Ответы (1)


Вот проблема: это присвоение создает изменяемый строковый объект:

NSMutableString *ibmcountryCodeLabel=[[NSMutableString alloc]init];

Однако после этого присвоения объект, на который указывает ibmcountryCodeLabel, больше не изменяется:

ibmcountryCodeLabel=@"555";

Это потому, что константа @"555" является неизменным подклассом NSString. Попытка его изменить приводит к ошибкам во время выполнения.

Измените код следующим образом, чтобы устранить эту проблему:

NSMutableString *ibmcountryCodeLabel=[NSMutableString stringWithString:@"555"];
NSMutableString *imobileNumberValue=[NSMutableString stringWithString:@"333"];
person Sergey Kalinichenko    schedule 25.11.2013
comment
Спасибо за это. Фактически, я получаю Countrycodelabel из текстового поля, а также mobileNumberValue, и мне нужно добавить оба. Не могли бы вы помочь мне, как это сделать? - person Timothy Rajan; 25.11.2013
comment
@TimothyRajan Конечно - просто передайте текст из ваших текстовых полей методу NSMutableString stringWithString:. - person Sergey Kalinichenko; 25.11.2013
comment
Другой вариант - заменить ibmcountryCodeLabel=@"555"; на [ibmcountryCodeLabel appendString:@"555"]; - person rmaddy; 25.11.2013