Получение ошибки при использовании функции replaceOccuranceOfString
[str replaceOccurrencesOfString: withString: options: range:
[str replaceOccurrencesOfString:@"'" withString:@"!~" options:0 range:NSMakeRange(0,str.length)]
Я использую эту функцию для замены символа в моем NSMutableString
с символом!~, чтобы я мог сохранить эту строку в базе данных. Он прекрасно работает, когда я храню его в базе данных, но во время извлечения и преобразования его обратно с помощью той же функции он показывает мне ошибку, как.
ошибка*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to mutate immutable object with replaceOccurrencesOfString:withString:options:range:'
Вот, str
имеет NSMutableString
тип. Я проверил его тип [str class]
его превращается в NSCFString
не знаете, почему это меняется? Я также пытаюсь преобразовать его в NSMutableString
, но это не преобразование. Я пытаюсь сделать это много раз, но это прекрасно работает со всеми остальными местами, только в моем контроллере с одним представлением, это показывает мне это.
Есть предположения, где я делаю не так?
1 ответ
Вы не показываете, как вы конвертируете неизменяемый из базы данных в изменяемую строку. Просто делаю NSMutableString *mstr = str;
недостаточно, вам нужно использовать NSMutableString *mstr = [NSMutableString stringWithString:str];
,
Поскольку возвращаемая строка является неизменной, вы можете рассмотреть возможность использования [NSString stringByReplacingOccurrencesOfString:withString:]
вместо того, чтобы работать с изменяемыми строками.