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% 確信しています。
ヘルプやアドバイスをいただければ幸いです。