仅显示数组中的某些对象

时间:2013-05-09 20:23:16

标签: ios xcode nsarray restkit

我想只显示数组中的某些项,但无法弄清楚如何操作。

这是我目前显示数组中所有对象的代码:

@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进行对象映射。

2 个答案:

答案 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;
}

你是否试图懒惰加载它们,或者其余的只是无关紧要?祝你好运。