gpt4 book ai didi

cocoa - NSString *predicateFormat 如何搜索两个实体

转载 作者:行者123 更新时间:2023-12-03 17:00:11 25 4
gpt4 key购买 nike

你好,很抱歉问了这个愚蠢的问题,但我想我可能在这里遗漏了一些简单的东西,并且自己无法弄清楚。

我正在尝试使用以下代码搜索表格 View :

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

NSString *predicateFormat = @"(name contains[c] %@) OR (age contains[c] %@)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat, searchString];
self.fetchedResultsController = [self resetFetchedResultsController:predicate cached:NO];

NSError *error = nil;
[self.fetchedResultsController performFetch:&error];

// Return YES to cause the search result table view to be reloaded.
return YES;
}

我想要实现的是,当用户搜索表格时,不仅可以按“姓名”搜索,还可以按“年龄”搜索!

我上面的代码只搜索“名称”

我错过了一些简单的事情吗?

感谢您的宝贵时间

最佳答案

而不是:

NSString *predicateFormat = @"(name contains[c] %@) OR (age contains[c] %@)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat, searchString];

您有三个选择:

NSString *predicateFormat = @"(name contains[c] %@) OR (age contains[c] %@)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat, searchString, searchString];

或者:

NSString *predicateFormat = @"(name contains[c] %1$@) OR (age contains[c] %1$@)";
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFormat, searchString];

或者:

NSString *predicateFormat = @"(name contains[c] $SEARCH) OR (age contains[c] $SEARCH)";
NSPredicate *template = [NSPredicate predicateWithFormat:predicateFormat];
NSPredicate *predicate = [template predicateWithSubstitutionVariables:[NSDictionary dictionaryWithObject:searchString forKey:@"SEARCH"]];

如果您正在构建一个具有未知数量替换的大型谓词,则第三个选项很不错。就不重复自己而言,第二个可能是最简单的,但第一个最容易理解。

关于cocoa - NSString *predicateFormat 如何搜索两个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3018197/

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