我想使用 NSPredicate
用另一个 NSArray
过滤一个 NSArray
NSArray *a = @[@{@"key1": @"foo", @"key2": @(53), @"key3": @(YES)},
@{@"key1": @"bar", @"key2": @(12), @"key3": @(YES)},
@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
NSArray *b = @[@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
NSArray *expectedResult = @[@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
我试过类似的东西:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"key1 like (key1 IN %@)", b];
NSArray *result = [a filteredArrayUsingPredicate:predicate];
但是,不幸的是,我没有让它发挥作用。
最佳答案
使用这个简单的查询。要从数组 b
中获取 key1
的值,您必须使用简单的 KVC
valueForKey:
方法。
NSArray *a = @[@{@"key1": @"foo", @"key2": @(53), @"key3": @(YES)},
@{@"key1": @"bar", @"key2": @(12), @"key3": @(YES)},
@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
NSArray *b = @[@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
NSArray *expectedResult = @[@{@"key1": @"foobar", @"key2": @(42), @"key3": @(NO)}];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"key1 IN %@",[b valueForKey:@"key1"]];
NSArray *result = [a filteredArrayUsingPredicate:predicate];
NSLog(@"%@",result);
关于ios - 使用 NSPredicate 用另一个 NSArray 过滤一个 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507636/