在二维数组中搜索 tableView objC

Posted

技术标签:

【中文标题】在二维数组中搜索 tableView objC【英文标题】:Search 2 dimensional array for tableView objC 【发布时间】:2015-10-14 11:27:43 【问题描述】:

我在一个数组中有一个结果列表,其中包含每个主要对象的名称和 URL。

名称是要搜索的内容,URL 是与 TableView 中的每一行一起显示的图像。

如何仅搜索和过滤第一个子对象的结果?

- (void)filterContentForSearchText:(NSString*)searchText scope: (NSString*)scope

    [self.searchResult removeAllObjects];
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];

    self.searchResult = [NSMutableArray arrayWithArray: [self.TableData filteredArrayUsingPredicate:resultPredicate]];


这不会在搜索结果中返回任何内容。当我有一个数组时它起作用了。那么如何仅在第一个子对象而不是 URL 上搜索 TableData。

这就是我在前一个 viewController 中填充数组的方式

for(NSDictionary *eachEntry in json)

    NSString *entry = [eachEntry objectForKey:@"client"];
    NSString *imageEntry = [eachEntry objectForKey:@"imgLogo"];
    [_tableData addObject:[NSMutableArray arrayWithObjects:entry, imageEntry, nil]];

编辑

我仍然希望搜索结果包含两个对象,因为这样可以更轻松地显示正确的图像

【问题讨论】:

【参考方案1】:

如果你把词条和图片放在字典里,就可以用key搜索了。

for(NSDictionary *eachEntry in json)

    NSString *entry = [eachEntry objectForKey:@"client"];
    NSString *imageEntry = [eachEntry objectForKey:@"imgLogo"];
    [_tableData addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:entry, @"entry", imageEntry, @"imageEntry", nil]];


- (void)filterContentForSearchText:(NSString*)searchText scope: (NSString*)scope

    [self.searchResult removeAllObjects];
    NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"entry contains[c] %@", searchText];

    self.searchResult = [NSMutableArray arrayWithArray: [self.TableData filteredArrayUsingPredicate:resultPredicate]];

【讨论】:

真棒的答案老兄,这是一种享受,谢谢你的时间【参考方案2】:

尝试了与您提供的相同的代码。它正确地给出过滤结果。确保您的数据已填写。

- (void)viewDidLoad 
     [super viewDidLoad];

     [searchResult removeAllObjects];

     tableData = [[NSMutableArray alloc] init];

     NSString *entry = @"client";
     NSString *imageEntry = @"imageEntry";
     [tableData addObject:[NSMutableArray arrayWithObjects:entry, imageEntry, nil]];


     NSString *searchText = @"client";
     NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] %@", searchText];

     searchResult = [NSMutableArray arrayWithArray: [tableData filteredArrayUsingPredicate:resultPredicate]];
     NSLog(@"%@", searchResult);

【讨论】:

哦,好的,我现在看看,我认为这也会搜索 url,无论如何要停止它,否则我会得到没有任何意义的结果。 能否尝试添加更多对象,看看是否有效,只需重复这一行 [tableData addObject:[NSMutableArray arrayWithObjects:entry, imageEntry, nil]];几次。我的 TableData 肯定有数据初始化 是的,向 tableData 添加了 5-6 个对象。并得到正确的结果。 如何声明searchResult?我看不出我的有什么不同 NSMutableArray *tableData; NSMutableArray *searchResult;

以上是关于在二维数组中搜索 tableView objC的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组

如何在二维数组中搜索单词和替换

跨多个单元格最有效地搜索二维数字数组

如何通过 LINQ 在二维数组中搜索?[version2]

google sheet - 在二维数组中搜索值

如何在从左到右和从上到下排序的二维数组中搜索数字?