在二维数组中搜索 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的主要内容,如果未能解决你的问题,请参考以下文章