使用循环以编程方式添加NSMutableArray时出错

时间:2012-05-03 20:15:24

标签: objective-c ios xcode ios5.1

我正在尝试使用for循环将我从NSURL获取的数组添加到数组中:

(int i = 0; i < 10; i++) 

使其成为二维数组。继续在NSRangeException上出错。它只能在index [0]处insertObject或addObject,当'i'增加到1时,它会抛出一个错误。它只能意味着它不会添加而是覆盖,因此当它覆盖第二次并且i = 1时,它会抛出错误。如何添加更多而不是覆盖初始化的二维数组?

- (void)qBlock{
    for (int i = 0; i < 10; i++) {
        NSURL *url = [NSURL URLWithString:@"http://somefiles.php"];
        NSError *error;
        NSStringEncoding encoding;
        NSString *response = [[NSString alloc] initWithContentsOfURL:url 
                                                        usedEncoding:&encoding 
                                                               error:&error];
        if (response) {

            const char *convert = [response UTF8String];
            NSString *responseString = [NSString stringWithUTF8String:convert];
            NSMutableArray *sample = [responseString JSONValue];

            block = [[NSMutableArray alloc]init];
        [block insertObject:sample atIndex:i];
        }


    else {
        UIAlertView *alert1 = [[UIAlertView alloc]initWithTitle:@"ALERT" message:@"Internet Connection cannot be established." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert1 show];
    }
}
//Calling 10 blocks of codes
for (id obj in block) {
    NSLog(@"%@",obj);
}

1 个答案:

答案 0 :(得分:1)

此:

        block = [[NSMutableArray alloc]init];
    [block insertObject:sample atIndex:i];

通过for循环在每次迭代中用空数组替换整个块数组。

将块数组初始化移到for循环之外。