-3

我在 for 循环中将对象添加到 NSMutableArray 时遇到了一些麻烦。当我尝试它时,我收到一个错误:

*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object” Blockquote

我已经查看了与此非常相似的其他问题,并且由于数组是不可变的或者他们正在读取 NSUserDefaults,所以它们得到了解决,但是我没有做这些事情。

我下载了一些 JSON 并使用 NSJSONSelialization 解析它,我的想法是我有一个几乎类似于 twitter 的活动流从 UITableView 的顶部传下来。这是我的代码:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
if (isDownloadingFirstTime){
    isDownloadingFirstTime = NO;
    dataArray = [Methods parseJSONDataWithData:data];
    [mainTableView reloadData];
} else{
    [refreshControl endRefreshing];
    NSArray *tempArray = [Methods parseJSONDataWithData:data];

    for (int num = 0; num < tempArray.count; num++){
        [dataArray addObject:[tempArray objectAtIndex:num]];
        NSArray *indexPathArray = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]];
        [mainTableView beginUpdates];
        [mainTableView insertRowsAtIndexPaths:indexPathArray withRowAnimation:UITableViewRowAnimationTop];
        [mainTableView endUpdates];
    }
}
data = [NSMutableData data];
}

当我尝试添加对象时,我在 for 循环的第一行得到了异常:

我绝不会在此类中使用 NSUserDefaults,并且我 100% 确定 dataArray 是 NSMutableArray。

任何帮助或建议表示赞赏!

4

1 回答 1

0

dataArray不是一个可变数组。您可能确实将指针键入为 one,但这不会使对象本身可变。最简单的方法是使用可变副本 tho dataArray

dataArray = [[Methods parseJSONDataWithData:data] mutableCopy];
于 2013-10-12T01:47:44.590 回答