请任何人都可以告诉我如何使用谓词从数组中过滤数组。?

时间:2013-07-02 08:30:08

标签: ios objective-c

我有一个数组

NSArray *arry = [[NSArray alloc]initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil];

我希望获得具有对象的数组

@"1322",@"13222",@"13322",@"13212"

你能告诉我如何在这个过滤器中使用谓词。

4 个答案:

答案 0 :(得分:3)

我不确定我是否理解你的问题(以及评论)。

要查找array中包含在另一个数组wanted中的所有对象, 你可以使用“SELF IN%@”谓词:

NSArray *array = [[NSArray alloc] initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil];
NSArray *wanted = [[NSArray alloc] initWithObjects:@"1322", @"13522", @"999", nil];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", wanted];
NSArray *filtered = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@", filtered);

输出:

(
1322,
13522
)

答案 1 :(得分:1)

尝试使用此

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like [c]'1*1*1'"];
NSArray *arry = [NSArray arrayWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212", nil];
NSArray *resltArry = [array filteredArrayUsingPredicate:predicate];

答案 2 :(得分:0)

NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF like [c]'13***'"];
NSArray *array = [NSArray arrayWithObjects:@"11321", @"13121", @"23121", @"1111", nil];
NSArray *resultArray = [array filteredArrayUsingPredicate:p];
NSLog(@"%@",resultArray);

O / P

(     13121,

您也可以参考此链接 thisone

答案 3 :(得分:0)

NSArray *yourArray = [[NSArray alloc]initWithObjects:@"1322",@"13222",@"13322",@"14322",@"13522",@"21322",@"11322",@"13212" ,nil];
NSArray *filter = [[NSArray alloc] initWithObjects:@"1322", @"13522", nil];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", filter];

NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];

filteredArray将包含您过滤的数据。我认为它也会起作用。