搜索多个数组中的数据

时间:2014-01-21 14:58:58

标签: objective-c arrays uitableview uisearchbar searchbar

我正在为我的UITableview做一个搜索栏。

到目前为止它唯一的过滤一个数组 - (void)searchthroughdata,即self.Title。 但是我想让它过滤两个数组 - self.Title和self.Description。

我的.h文件:

@property (nonatomic, strong) NSArray * Images;
@property (nonatomic, strong) NSArray * Title;
@property (nonatomic, strong) NSArray * Description;
@property (nonatomic, strong) NSMutableArray *results;
@property (nonatomic, strong) IBOutlet UISearchBar *SearchBar;

我的.m文件:

-(void)searchThroughData {

self.results = nil;
NSPredicate *resultsPredicate = [NSPredicate predicateWithFormat:@"SELF contains [search] %@", self.SearchBar.text];



self.results = [[self.Title filteredArrayUsingPredicate:resultsPredicate] mutableCopy];

}



-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

[self searchThroughData];

}


 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}

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

if (tableView == self.tableView) {
    return _Title.count;

} else {
    [self searchThroughData];
    return self.results.count;

}

// Return the number of rows in the section.
//return _Title.count;
}

如何通过NSArray *说明进行过滤?

1 个答案:

答案 0 :(得分:1)

您最好的选择是没有多个阵列。而是使用

创建自定义对象
@property (nonatomic, strong) NSArray * Images;
@property (nonatomic, strong) NSArray * Title;
@property (nonatomic, strong) NSArray * Description;

(或字典),并有一个包含这些对象的数组(我假设你的数据模型在这里......)。

现在,当您过滤时,您只需使用OR检查谓词中的每个项目。