我正在尝试在我的代码中使用NSPredicate搜索名称。搜索有效,但不会返回适当的结果。当我搜索例如“Colin”的名称时,它返回表中的所有其他名称或其他名称,如“Mike”,但如果我输入一个不存在的随机字符串,则返回:“No Result Found”。当我在搜索栏中输入一个名字(例如Lisa)时,我希望它找到名字(Lisa)并返回它,但它没有那样做
这是我的代码:
- (void)filterData {
[self.filteredSearch removeAllObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS [cd] %@", mySearchBar.text];
self.filteredSearch = [[self.name filteredArrayUsingPredicate:predicate] mutableCopy];
}
self.name返回表中的所有名称,并从属性列表中获取
NSString *path = [[NSBundle mainBundle] pathForResource:@"lecturers" ofType:@"plist"];
lecturers= [[NSDictionary alloc] initWithContentsOfFile:path];
// Allocate key objects from lecturers list
name = [lecturers objectForKey:@"name"];
- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
[self filterData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
if (tableView == self.tableView) {
return self.name.count;
}
[self filteredSearch];
return self.filteredSearch.count;
}
我该如何解决这个问题?我尝试过使用自己的MATCHES和其他NSPredicate格式,但它们似乎不起作用。
答案 0 :(得分:0)
请确认'searchText'有值。在控制台窗口中打印searchtext。
- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
self.filteredSearch removeAllObjects];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self CONTAINS[cd]%@", searchText];
self.filteredSearch = [[self.name filteredArrayUsingPredicate:predicate] mutableCopy];
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.filteredSearch.count;
}