我想只显示数组中的某些项,但无法弄清楚如何操作。
这是我目前显示数组中所有对象的代码:
@property (strong, nonatomic) NSArray *springs;
@property (strong, nonatomic) NSMutableArray *leafs;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"standardCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Spring *spring = [springs objectAtIndex:indexPath.section]; // 13 objects
Leaf *leaf = [spring.leafs objectAtIndex:indexPath.row]; // 30 objects
cell.textLabel.text = league.shortName;
return cell;
}
所以我只想显示我创建的数组中30个叶子对象中的 5个,而不显示所有这些对象。有没有办法做到这一点?
(我正在使用API将项目拉入数组)
感谢您的帮助,将发布所需的任何特定代码或其他信息!
修改 根据要求添加:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
Spring *spring = [springs objectAtIndex:section];
return spring.leafs.count;
}
我正在使用RestKit进行对象映射。
答案 0 :(得分:2)
使用[NSArray objectsAtIndexes:]
(reference)获取数组的子集。
Leaf *leaf = [spring.leafs objectAtIndex:indexPath.row];
// This will include objects 0-4:
NSRange range = NSMakeRange(0, 5);
NSArray *subset = [leaf objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:range]];
只需将range
调整为子集中所需的任何开头/长度即可。
编辑:当然,此方法中的任何子集逻辑也必须在numberOfRowsInSection:
委托方法中重复,否则您的应用会抛出异常。
答案 1 :(得分:1)
你的tableView:numberOfRowsInSection
怎么样,不要完整计数完整的spring.leafs?例如,
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 5;
}
你是否试图懒惰加载它们,或者其余的只是无关紧要?祝你好运。