SOに関するいくつかの同様の質問から取られたこのコードがありますが、なぜクラッシュするのかわかりません。私は、受け入れられ、明らかに正しい回答の例に従いました。
テーブルの最初のセクションが唯一の静的行を保持する静的テーブルがあります。2 番目のセクションは最初は空で、後で async-task によって入力されるはずです。最初numOfDynamicRows
はゼロに設定され、非同期タスクが完了すると、この値は返される辞書の長さに変更されます。を使用するとすべてがクラッシュしますreloadData
。コードをデバッグしようとしましたが、新しい行を追加するセクションになるとクラッシュしているようです。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0)
return 1;
else
return numOfDynamicRows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int section = indexPath.section;
int row = indexPath.row;
if (section == 0) {
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
}
else {
HomeFeedCell *cell;
cell = [tableView dequeueReusableCellWithIdentifier:@"myCustomCell"];
if (!cell)
{
// create a cell
cell = [[HomeFeedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCustomCell"];
}
return cell;
}
}
次のメッセージでクラッシュしています(これは私を非常に混乱させています):
* キャッチされない例外 'NSRangeException' が原因でアプリを終了します。理由: '* -[__NSArrayI objectAtIndex:]: インデックス 0 が空の配列の境界を超えています'