我正在为我的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 *说明进行过滤?
答案 0 :(得分:1)
您最好的选择是没有多个阵列。而是使用
创建自定义对象@property (nonatomic, strong) NSArray * Images;
@property (nonatomic, strong) NSArray * Title;
@property (nonatomic, strong) NSArray * Description;
(或字典),并有一个包含这些对象的数组(我假设你的数据模型在这里......)。
现在,当您过滤时,您只需使用OR检查谓词中的每个项目。