Получение ошибки при использовании функции 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:] вместо того, чтобы работать с изменяемыми строками.

Другие вопросы по тегам