使一个数组等于特定对象的另一个数组

Posted

技术标签:

【中文标题】使一个数组等于特定对象的另一个数组【英文标题】:Make an array equal to another array for specific objects 【发布时间】:2015-11-29 09:56:21 【问题描述】:

我要做的是使一个数组与另一个数组相等,但针对特定对象。就像第二个数组包含很多对象一样,我希望第一个数组从第二个数组中获取特定对象,然后在 NumberOfRowsInSection 中返回它。

这是我尝试过的,但它什么也没返回:

-(NSInteger) tableView: (UITableView * ) tableView numberOfRowsInSection: (NSINteger) section 

     NSArray *array;
    NSString * foundString;
    NSInteger i;
    for (i = 0; i < [LabelFilesArray count]; i++) 
        if ([[[LabelFilesArray objectAtIndex: i] objectForKey: @"teamSide"] isEqualToString: @"test2"]) 
            array = [LabelFilesArray objectAtIndex: i] ObjectForKey: @"teamSide"]; //Here is my problem.
            foundString = @"found";
            if ([foundString isEqualToString: @"found"]) 
                break;
            
        
    
    return array.count; //it returns nothing

【问题讨论】:

你能格式化你的代码并修复缩进问题吗? 显示输入数据的示例以及您想要的结果和得到的结果 什么意思?我的代码运行完美,但数组部分是我遇到的麻烦 @ozgur 该评论并非真正具有建设性。由于 Malcolm 似乎是 *** 上的新人,您可以为他做这件事并将他推荐给:***.com/help/asking 我们都需要互相帮助。 您在哪里(以及如何)定义array 【参考方案1】:

您需要保持简单,因此在获取数据后立即在 tableview 中选择您想要的数据,并将其存储在第三个数组中。

这允许您删除和重新排列行,并使您的数据源方法变得简单。

ViewController.m:

@interface ViewController()

    NSMutableArray *_tableData;


- (void)methodThatGetsData

   // Get data in LabelFilesArray

    _tableData = [NSMutableArray new];
    for (NSDictionary *dict in LabelFilesArray) 
        for (NSString *filter in _filterArray) 
            if (dict[@"teamSide"] isEqualToString:filter]) 
                [_tableData addObject:dict];
                break;
            
        
    
    [_tableView reloadData];


-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection: (NSINteger)section 
    [_tableData count];


// etc.

【讨论】:

请。我的意思是过滤 LabelFilesArray 然后返回过滤后的数组 @malcolm 好的,已更新。我假设这个数组包含字典。此外,_filterArray 包含过滤器字符串数组。 @malcolm 如果此答案解决了您的问题,您应该通过接受答案来表明这一点(单击复选标记)。【参考方案2】:

你也可以使用 NSPredicate 来过滤数组的内容。

示例:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", key, [dict objectForKey:key]];
_filterArray = [LabelFilesArray filteredArrayUsingPredicate:predicate];

【讨论】:

以上是关于使一个数组等于特定对象的另一个数组的主要内容,如果未能解决你的问题,请参考以下文章

最小删除子数组以使数组等于目标

iOS:在数组中查找属性x等于对象y的对象

优先队列

LeetCode 2357. 使数组中所有元素都等于零

LeetCode 2357. 使数组中所有元素都等于零

Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?