0

这是什么错误?我正在使用可变类型,但它仍然无法正常工作!

错误是:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“使用 deleteCharactersInRange 改变不可变对象:”

NSMutableString *line= [NSMutableString stringWithString:@"here is the string"];
[line deleteCharactersInRange: NSMakeRange(1,9 )];
4

3 回答 3

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... 里面什么都没有。而且你不能从一个没有任何内容的可变字符串中删除任何内容。

于 2011-11-25T10:48:54.923 回答
0

如果您的代码看起来与您在此处引用的完全一样,那么问题是您正试图从空字符串中删除某些内容。但是由于没有什么可以删除的,所以这是一个错误。

于 2011-11-25T10:50:17.153 回答
0

异常名称很清楚:“无效参数”。您所做的是创建一个空的可变字符串,然后尝试删除 1..9 范围内的字符,远远超出限制。此函数不能容忍超出范围:它会引发异常。为什么你写评论“行有价值!”?你是在你发布的两行代码之间生成它吗?

于 2011-11-25T10:50:43.307 回答