使用replaceOccuranceOfString功能

问题描述:

[str replaceOccurrencesOfString: withString: options: range:使用replaceOccuranceOfString功能

[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,但它没有转换。我在其他方面尝试了很多次,但是它在所有其他地方都能正常工作,只有在我的一个视图控制器中,它才向我展示了这一点。

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

+1

尝试在使用它之前分配str变量。 – 2012-04-12 06:42:49

+0

@RamaRao,我试过了!它不工作。 – Hemang 2012-04-12 06:47:02

+0

你试过像这样NSString * str = [[[NSString alloc] init] retain]; – 2012-04-12 06:51:26

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

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