使用使用文件构建的NSArray

时间:2014-02-18 20:31:27

标签: ios objective-c file nsarray

我需要有关索引和界限的帮助。

我有一个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;”

有人可以帮我解决这个问题吗? 谢谢!

2 个答案:

答案 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: