gpt4 book ai didi

ios - 使用 NSPredicate 过滤 NSArray

转载 作者:行者123 更新时间:2023-11-29 00:59:48 25 4
gpt4 key购买 nike

这是我的代码:

-(NSArray *)searchTeamsWithPlayerPharse:(NSMutableArray *)teams phrase:(NSString *)phrase

{

NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"rel_Players.fullName CONTAINS[c] %@" ,phrase];
NSArray *searchResult = [teams filteredArrayUsingPredicate:searchPredicate];


return searchResult ;
}

它不起作用。在数组中我有团队对象。团队与球员有关系,我想过滤这种关系,发现只有球员的球队在 ​​fullName 中有 pharse。如何改变这个 NSPredicate

最佳答案

ANY 运算符应该可以工作:

NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"ANY rel_Players.fullName CONTAINS[c] %@" ,phrase];

一些补充说明:

  • rel_ 前缀是不常见且不必要的:复数形式的 players 就足够了,下划线可以省略,因为新单词的开头由大写字符(驼峰式)标记。<
  • 该方法不需要采用可变数组参数。这将用例限制为 NSMutableArray 类型的参数。如果将参数类型更改为 NSArray *,则可以同时使用 NSArrayNSMutableArray 的实例。
  • 该方法不适用于实例上下文:它没有对 self 的单一访问权限。你可以用它创建一个函数,或者——我更愿意——让它成为 NSArray 的方法。

综合考虑:

@interface NSArray(TeamPlayerAddition)
-(NSArray *)teamsWithPlayerPharse:(NSString *)phrase
@end

@implementation NSArray(TeamPlayerAddition)
-(NSArray *)teamsWithPlayerPharse:(NSString *)phrase
{
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"ANY rel_Players.fullName CONTAINS[c] %@" ,phrase];
return [self filteredArrayUsingPredicate:searchPredicate];
}
@end

关于ios - 使用 NSPredicate 过滤 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37146882/

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