NSPredicate没有返回正确的结果

时间:2014-03-31 02:42:23

标签: ios nspredicate

我正在尝试在我的代码中使用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格式,但它们似乎不起作用。

1 个答案:

答案 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;
}