0

我的代码在这一行崩溃:

[(NSMutableString *)string replaceCharactersInRange:range withString:@""];

错误尝试改变不可变对象。

这是怎么发生的,我该如何解决?

4

2 回答 2

7

字符串不是可变的,强制转换不是魔术,它不会把它变成可变字符串。您应该在可变副本上执行此操作:

NSMutableString* mutableString= [string mutableCopy];
[mutableString replaceCharactersInRange:range withString:@""];
于 2013-01-26T20:23:42.417 回答
3

您正在对不可变字符串进行类型转换,然后对其进行变异,实际上这并没有发生。

您需要创建一个新的 NSMutableString 然后使用replaceCharactersInRange...

NSMutableString *mutableString=[NSMutableString stringWithString:string];
[mutableString replaceCharactersInRange:range withString:@""];

如果您希望同一对象中的结果将其设置为字符串。

string=mutableString;
于 2013-01-26T20:24:16.980 回答