gpt4 book ai didi

ios - SearchBarController 谓词导致崩溃

转载 作者:行者123 更新时间:2023-11-29 02:42:48 27 4
gpt4 key购买 nike

我正在尝试将 searchBarController 添加到我的 tableView 中。我在构建应用程序时没有收到任何错误,但是当我开始在搜索栏中输入内容时,应用程序抛出异常并崩溃。

导致崩溃的行在最后一段代码中的下方进行了注释。有谁知道这里可能出了什么问题?非常感谢!

我的 .h 文件的相关部分:

@interface BusinessesViewController : UITableViewController<CLLocationManagerDelegate, 
UISearchDisplayDelegate> {

IBOutlet UITableView *mainTableView;
NSArray *businesses;
NSMutableData *data;
NSArray *filteredBusinesses;
}

我的 viewDidLoad 方法的相关部分:

- (void)viewDidLoad {
filteredBusinesses = [[NSArray alloc]init];
}

NumberOfRowsInSection 方法:

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

if (tableView == self.searchDisplayController.searchResultsTableView) {
return [filteredBusinesses count];
}
else {
return [businesses count];
}
}

CellForRowAtIndexPath 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath {

BusinessesTableViewCell *cell = (BusinessesTableViewCell *)[tableView
dequeueReusableCellWithIdentifier:@"MainCell"];

if (tableView == self.searchDisplayController.searchResultsTableView) {
[cell.businessMainLabel setText:[[filteredBusinesses
objectAtIndex:indexPath.row]objectForKey:@"name"]];
}
else {
[cell.businessMainLabel setText:[[businesses
objectAtIndex:indexPath.row]objectForKey:@"name"]];
}

return cell;
}

Predicate 和 SearchDisplayController 方法:

- (void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope {

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"beginswith[cd] %@",
searchText];

//THIS LINE OF CODE CAUSES THE CRASH
filteredBusinesses = [businesses filteredArrayUsingPredicate:predicate];
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString {

[self filterContentForSearchText:searchString scope:
[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:
[self.searchDisplayController.searchBar selectedScopeButtonIndex]]];
return YES;
}

最佳答案

您的谓词错误,丢失。从其他代码看起来好像businesses 中的对象有一个“name”属性,因此谓词应该是

[NSPredicate predicateWithFormat:@"name BEGINSWITH[cd] %@",  searchText]
^key ^operator ^value

关于ios - SearchBarController 谓词导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25544320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com