使用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:'
这里,str
是NSMutableString
类型。我检查了它的类型[str class]
它的转换为NSCFString
不知道它为什么会改变?我也尝试将它转换为NSMutableString
,但它没有转换。我在其他方面尝试了很多次,但是它在所有其他地方都能正常工作,只有在我的一个视图控制器中,它才向我展示了这一点。
任何猜测我在哪里做错了?
您不会显示如何将不可变数据从数据库转换为可变字符串。只是做NSMutableString *mstr = str;
是不够的,你需要使用NSMutableString *mstr = [NSMutableString stringWithString:str];
。
由于返回的字符串是不可变的,您可能需要考虑使用[NSString stringByReplacingOccurrencesOfString:withString:]
而不是使用可变字符串。
尝试在使用它之前分配str变量。 – 2012-04-12 06:42:49
@RamaRao,我试过了!它不工作。 – Hemang 2012-04-12 06:47:02
你试过像这样NSString * str = [[[NSString alloc] init] retain]; – 2012-04-12 06:51:26