我在文本字段中有一些文本,它们以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:]:范围或索引越界')有人可以向我解释
答案 0 :(得分:2)
你是说你有一个包含起始值和输入的12个字符的字符串,连接在一起?我强烈怀疑情况并非如此。
使用调试器,在问题的第一行中断并在调试控制台中转到po [mainTextController text]
。你会发现字符串不像你期望的那样长。
答案 1 :(得分:0)
您正在尝试访问mainTextController.text中文本字符串范围之外的字符
在访问该字符之前,您应该检查字符串的长度:
if([mainTextController.text length] > 12)
{
unichar aChar6 = [mainTextController.text characterAtIndex:11];
}