charachterAtIndex最大范围?

时间:2012-05-17 23:21:38

标签: iphone objective-c xcode

我在文本字段中有一些文本,它们以6个字符开头,我自己的输入也是6个字符长,我使用这个代码让它们成为比较的一部分:

unichar aChar1 = [mainTextController.text characterAtIndex:6];
    unichar aChar2 = [mainTextController.text characterAtIndex:7];
    unichar aChar3 = [mainTextController.text characterAtIndex:8];
    unichar aChar4 = [mainTextController.text characterAtIndex:9];
    unichar aChar5 = [mainTextController.text characterAtIndex:10];
    unichar aChar6 = [mainTextController.text characterAtIndex:11];

现在,当我这样做时,它会暂停我的模拟器但是当我在0,1,2,3,4,5中转6,7,8,9,10,11然后它确实有效。怎么会?

* 由于未捕获的异常'NSRangeException'终止应用程序,原因:' - [__ NSCFString characterAtIndex:]:范围或索引越界')有人可以向我解释

2 个答案:

答案 0 :(得分:2)

你是说你有一个包含起始值和输入的12个字符的字符串,连接在一起?我强烈怀疑情况并非如此。

使用调试器,在问题的第一行中断并在调试控制台中转到po [mainTextController text]。你会发现字符串不像你期望的那样长。

答案 1 :(得分:0)

您正在尝试访问mainTextController.text中文本字符串范围之外的字符

在访问该字符之前,您应该检查字符串的长度:

if([mainTextController.text length] > 12)
{
    unichar aChar6 = [mainTextController.text characterAtIndex:11];
}