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