0

[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:'

这里,strNSMutableString类型。我检查了它的类型,[str class]它的转换NSCFString者不知道它为什么会改变?我也尝试将其转换为NSMutableString,但它没有转换。我以其他方式尝试了很多次,但它在所有其他地方都可以正常工作,仅在我的一个视图控制器中,它向我展示了这一点。

任何猜测我在哪里做错了吗?

4

1 回答 1

1

您没有展示如何将不可变从数据库转换为可变字符串。仅仅做NSMutableString *mstr = str;是不够的,你需要使用NSMutableString *mstr = [NSMutableString stringWithString:str];.

因为返回的字符串是不可变的,您可能需要考虑使用[NSString stringByReplacingOccurrencesOfString:withString:]而不是使用可变字符串。

于 2012-04-12T08:11:12.000 回答