-3

for ループで NSMutableArray にオブジェクトを追加するのに問題があります。試してみると、エラーが発生します。

*キャッチされない例外 'NSInternalInconsistencyException' が原因でアプリを終了します。理由: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object' Blockquote

これに非常によく似た他の質問を見てきましたが、配列が不変であるか、NSUserDefaults を読み取っていたため解決されましたが、どちらも行っていません。

いくつかの JSON をダウンロードし、NSJSONSelialization を使用してそれを解析します。アイデアは、UITableView の上部から、ほぼ Twitter のようなアクティビティ ストリームが流れてくるということです。これが私のコードです:

-(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];
}

addObject を実行しようとすると、for ループの最初の行で例外が発生します。

私は決してこのクラスで NSUserDefaults を使用しておらず、dataArray が NSMutableArray であることを 100% 確信しています。

ヘルプやアドバイスをいただければ幸いです。

4

1 に答える 1