这是什么错误?我使用的是可变类型,但它仍无效!
错误是:
由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:'mutate immutable 具有deleteCharactersInRange的对象:'
NSMutableString *line= [NSMutableString stringWithString:@"here is the string"];
[line deleteCharactersInRange: NSMakeRange(1,9 )];
答案 0 :(得分:0)
我的新答案:
使用新代码,我在最后添加了一行:
NSMutableString *line= [NSMutableString stringWithString:@"here is the string"];
[line deleteCharactersInRange: NSMakeRange(1,9 )];
NSLog( @"line is %@", line );
控制台输出是:
2011-11-25 06:08:13.248 TestingCommandLine[13324:903] line is he string
没有抛出异常。看起来它对我有用!
我的原始答案(原始问题):
您无法从其中没有任何内容的行中删除字符(因此例外)。
那两行信号源之间是否还有其他代码?如果没有,你有一个有效的NSMutableString ......没有任何内容。并且您无法从其中没有任何内容的可变字符串中删除任何内容。
答案 1 :(得分:0)
如果您的代码看起来与此处引用的完全一致,则问题在于您尝试从空字符串中删除某些内容。但是因为没有什么可以删除它是一个错误。
答案 2 :(得分:0)
异常名称是明确的:“无效的参数”。你所做的是创建一个空的可变字符串,然后尝试删除超出限制的1..9范围内的字符。此功能不能容忍超出范围:它会引发异常。 为什么你写评论“行有价值!”?你在你发布的两行代码之间生成它吗?