我需要有关索引和界限的帮助。
我有一个NSArray,其中包含一个由«分隔的解析文件; »。 所以基本上:
- (NSArray *) getArrayFromFile{
NSArray *fileArray;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSString stringWithFormat:@"%@/list.txt", documentsDirectory];
NSString *writedStr = [[NSString alloc]initWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];
fileArray = [writedStr componentsSeparatedByString:@";"];
return fileArray;
}
我想使用这个数组。
NSArray* myArray = [self getArrayFromFile];
for(k = 0; j < [myArray count]; k++){
NSLog(@"%@",[myArray objectAtIndex:k]);
}
但是当我通过返回的NSArray运行时,我总是有一个“以NSException类型的未捕获异常终止”
完整错误:http://pastebin.com/qApXU2s0当NSArray包含@“Hello”,@“World”,@“Array Content”和原始文件“Hello; World; Array Content;”
有人可以帮我解决这个问题吗? 谢谢!
答案 0 :(得分:2)
如果我们看一下你的for循环:
for(k = 0; j < [myArray count]; k++){
您可以看到在for语句的第一和第三部分中使用变量k
,在中间部分使用j
。所以无论j
是什么,它的值都超出了数组的范围。您需要将j
更改为k
。您也可以更改for循环以进行快速迭代,在这种情况下,您将消除k
变量,并且您不会有这样的混淆。
答案 1 :(得分:1)
@Gavin所说的是100%正确的......但对未来有一点小小的提示..
for (NSString *stringInArray in myArray)
{
NSLog(@"%@", stringInArray);
}
上面的代码片段更适合使用。
或者,如果你真的很勇敢,请结帐enumerateObjectsUsingBlock: