gpt4 book ai didi

ios - Coredata 谓词 IN 运算符,带有 like 或 contains

转载 作者:行者123 更新时间:2023-11-29 02:28:05 26 4
gpt4 key购买 nike

我有两个数组,我必须对它们进行通配符搜索,我正在使用 IN 运算符,但 IN 运算符为我提供了精确匹配,但我想获取包含 searchTerm 的所有结果。这可以通过 IN 运算符实现吗,还是我必须手动遍历所有记录并匹配选择我想要的记录。

当前代码:

        NSArray *filteredArray = [brandsFabric filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.color_name IN  %@ OR self.subcategory_name IN %@",colorNamesArray,patternNamesArray]];

想要的功能是这样的:

        NSArray *filteredArray = [brandsFabric filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.color_name IN like/contains %@ OR self.subcategory_name IN like/contains %@",colorNamesArray,patternNamesArray]];

最佳答案

这是一个非常昂贵的操作,但你可以试试:

NSMutableArray *predicates = [NSMutableArray array];
for (NSString *name in colorNames) {
[predicates addObject:[NSPredicate predicateWithFormat:
@"color_name CONTAINS[cd] %@", name]];
}
for (NSString *name in subcategoryNames) {
[predicates addObject:[NSPredicate predicateWithFormat:
@"subcategory_name CONTAINS[cd] %@", name]];
}
NSPredicate *final = [NSCompoundPredicate orPredicateWithSubpredicates:predicates];

也许这里甚至可以使用子查询。 (实验性的)

[NSPredicate predicateWithFormat:
@"((SUBQUERY(%@, $x, color_name CONTAINS[cd] $x).@count != 0) OR "
@"((SUBQUERY(%@, $x, category_name CONTAINS[cd] $x).@count != 0)",
colorNames, categoryNames];

关于ios - Coredata 谓词 IN 运算符,带有 like 或 contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27244547/

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