我已经查看了其他人发布此类错误的帖子,但是UISearchBar
中没有,而且我没有将我的问题与我的问题联系起来:
简而言之,我正在使用searchBars并尝试构建基础知识。
我有2个阵列
@interface ViewController ()
{
NSMutableArray *dataList;
NSArray *searchResults;
}
我使用以下内容填充了我的dataList数组:
dataList = [[NSMutableArray alloc] init];
[dataList addObject:@"This is row 1"];
[dataList addObject:@"That is row 2"];
....
[dataList addObject:@"More data in 20"];
我设置了searchDisplayController
:
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString*) searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}
我有一个过滤功能:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope {
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
searchResults = [dataList filteredArrayUsingPredicate:resultPredicate];
}
在最后一个过滤器函数中,我在最后一行searchResults =
2014-07-29 17:47:16.056 TestSearch[44628:60b] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFConstantString 0x1000069c8> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.'
*** First throw call stack:
...
...
...
有什么想法吗?
我尝试使用NSArray
代替NSMutableArray
,但我收到同样的错误。
tableView
填满了数据,所以没问题。
答案 0 :(得分:5)
name
不是NSString
对象的属性。使用self
作为谓词:
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"self contains[c] %@", searchText];