如何从一个数组中获取与另一个数组具有相同属性的对象?

How get objects from one array with same properties of other?

例如: 我有两个 NSMutableArray。一个@[1,2,3,4,5,6,7]。其他有像

这样的对象
@[
   @{@idObjectToSearch":1, @"name":@"aaaaa", @"surname": @"bbbbb"}, @{@idObjectToSearch":2, @"name":@"aaaaa", @"surname": @"ccccc"},
    ...
   @{@idObjectToSearch":100, @"name":@"aaaaa", @"surname": @"cccdcd"}
];

那么我如何才能更有效地从第二个数组中提取所需的对象呢?

您需要对第二个数组使用 NSPredicate

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch IN %@", firstArray];
//In above predicate instead of passing `1` you need to pass object from first array that you want.

NSArray *filterArray = [secondArray filteredArrayUsingPredicate:predicate];

//Now access Array objects
if (filterArray.count > 0) {
     NSLog(@"%@",filterArray);
}

你可以这样做

NSMutableArray * arrSorted = [NSMutableArray new];
for(int i=0;i<arr.count;i++) {
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch == %@", firstArray[i]];
    NSUInteger index = [secondArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
        return [predicate evaluateWithObject:obj];
    }];
    if (index != NSNotFound) {
        [arrSorted addObject:[arrM objectAtIndex:index]];
    }
}

arrSorted 将包含您排序的数据