我正在阅读 Big Nerd Ranch iOS 指南,我对这里的这段代码有疑问:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
}
BNRItem *p = [[[BNRItemStore sharedStore] allItems] objectAtIndex:[indexPath row]];
[[cell textLabel] setText:[p description]];
return cell;
}
BNRItemStore 只是一个数据存储对象,我已经在初始化方法中添加了五个 BNRItem 对象。然后将它们的字符串描述打印到 UI。我的困惑特别是关于这里的这条线:
BNRItem *p = [[[BNRItemStore sharedStore] allItems] objectAtIndex:[indexPath row]];
我理解这一行的方式是 objectAtIndex: 只是检索 BNRItemStore 中的项目并将它们分配给变量。我的问题是:
objectAtIndex: 如何使用参数 [indexPath row] 将所有五个对象返回给变量 *p?我的印象是 indexPath 对象包含一个部分和一行。所以 row 属性只会返回一个单行索引。在这里,看起来数组正在循环,它的 5 个内容返回到变量,然后打印到 UI。或者这不是发生了什么?row 属性实际上在这里做什么?