我的代码在此行崩溃:
[(NSMutableString *)string replaceCharactersInRange:range withString:@""];
错误尝试改变不可变对象。
这是怎么回事?如何解决?
答案 0 :(得分:7)
字符串不可变,强制转换不是魔术,它不会将其转换为可变字符串。你应该在一个可变副本上做到这一点:
NSMutableString* mutableString= [string mutableCopy];
[mutableString replaceCharactersInRange:range withString:@""];
答案 1 :(得分:3)
你正在对一个不可变的字符串进行类型转换,然后对其进行变异,实际上这种情况并没有发生。
您需要创建一个新的NSMutableString,然后使用replaceCharactersInRange
...
NSMutableString *mutableString=[NSMutableString stringWithString:string];
[mutableString replaceCharactersInRange:range withString:@""];
如果希望结果在同一个对象中,则将其设置为字符串。
string=mutableString;