试图改变不可变的对象错误

我的代码崩溃在这一行:

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

用错误尝试来改变不可变的对象。

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

该string不可变,铸造不是魔术,它不会变成一个可变的string。 你应该做一个可变的副本:

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

你正在types化一个不可变的string,然后改变它,实际上这没有发生。

你需要创build一个新的NSMutableString,然后使用replaceCharactersInRange

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

如果你想在同一个对象的结果设置它的string。

 string=mutableString;