gpt4 book ai didi

ios - 在表格 View 中显示之前过滤数组结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:43:53 25 4
gpt4 key购买 nike

我需要过滤我正在使用的数组,这样它就不会在我的 UITableView 中显示所有结果(只想显示 100 个 leafs 中的前 20 个) .

不知道该怎么做。如果您想发布更多代码,请告诉我!

(我正在使用 RestKit,从 API 中提取,并且对象映射已经正常工作)

ViewController.m

    @property (strong, nonatomic) NSArray *springs;
@property (strong, nonatomic) NSMutableArray *leafs;

- (void)viewDidLoad
{
[super viewDidLoad];
[[RKObjectManager sharedManager]
loadObjectsAtResourcePath:@"/ss/?apikey=xx"
usingBlock:^(RKObjectLoader *loader) {
loader.onDidLoadObjects = ^(NSArray *objects){

springs = objects;

// @cream-corn this is the for statement you suggested, but I can't finish it
for (Sport *sport in objects){
for (Leaf *leaf in spring.leafs){
if (leaf.abbreviation isEqualToString:@"ap"){
// This is where I can't figure out what to put
[];
}
}
}


[_tableView reloadData];


// @cream-corn this is where I log that I'm getting correct data
for (Spring *sppring in objects){
NSLog(@"%@", spring.name);
for (Leaf *leaf in spring.leafs){
NSLog(@" %@ %@", leaf.name, leaf.abbreviation);
}
}


};

[loader.mappingProvider
setMapping:[Spring mapping]
forKeyPath:@"springs"];
loader.onDidLoadResponse = ^(RKResponse *response){

};
}];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
Spring *spring = [springs objectAtIndex:section];
return spring.leafs.count;
}

- (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 = leaf.shortName;
return cell;
}

最佳答案

好的,就这样。你想专门过滤数组吗?即:删除满足特定条件的对象? 或者只在 TableView 中显示前 20 个?

如果前者是正确的(假设这个数组是可变的)你可以这样做:(这是伪代码的一种形式,这个代码不会复制/粘贴)

for(id obj in [myMutableArray reverseObjectEnumerator]) {
if(obj does not meet condition) {

[myMutableArray remove:obj]

}
}

reverseObjectEnumerator 是这个循环中最重要的部分,没有它;它会抛出异常,因为您在枚举时正在发生变异。

如果后者是正确的,您可以这样做:

   - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection (NSInteger)section
{
Spring *spring = [springs objectAtIndex:section];
return MIN(spring.leafs.count, 20);
}

return MIN(spring.leafs.count,20); 只返回较小的数字,spring.leafs.count20

关于ios - 在表格 View 中显示之前过滤数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com