如何根据使用NSPredicate排序的第一个数组对第二个数组进行排序?

时间:2014-01-18 04:25:58

标签: ios sorting nspredicate

我有两个NSMutableArrayssearchResultssearchResultsDetails。我使用NSPredicate对searchResults进行排序,并希望searchResultsDetails根据searchResults中使用NSPredicate删除的对象进行排序。

例如,假设searchResults最初包含1,2,3,4,5,searchResultsDetails最初包含A,B,C,D,E。因此,在使用NSPredicate对其进行排序后,searchResults包含1,2,5,我希望searchResultsDetails包含A,B,E。我怎么能做到这一点?

这是我用来排序第一个数组的代码。

NSPredicate *resultPredicate = [NSPredicate
                                predicateWithFormat:@"self CONTAINS %@",
                                searchText];

self.searchResults = [self.lines filteredArrayUsingPredicate:resultPredicate];

1 个答案:

答案 0 :(得分:0)

NSMutableArray *firstArray = [[NSMutableArray alloc] initWithObjects:@"ashu",@"toremove",@"ashuabc",@"toremove",@"ashu12345", nil];
NSMutableArray *descriptionArray = [[NSMutableArray alloc] initWithObjects:@"description for ashu",@"description for non ashu",@"description for ashuabc",@"description for nopnashu",@"description for ashu12345", nil];

NSMutableArray *removedIndexArray = [[NSMutableArray alloc] init];
NSMutableArray *sortedArray = [[NSMutableArray alloc] init];

for (int i = 0; i < [firstArray count]; i++) {
    NSString *tempStr = [firstArray objectAtIndex:i];

    if ([tempStr rangeOfString:@"ashu"].location == NSNotFound) {
        [removedIndexArray addObject:[NSString stringWithFormat:@"%d",i]];
    } else {
        [sortedArray addObject:tempStr];
    }
}

for (int j = 0; j < [removedIndexArray count]; j++) {
    [descriptionArray removeObjectAtIndex:[[removedIndexArray objectAtIndex:j] integerValue]];
}

NSLog(@"%@",descriptionArray);
NSLog(@"Sorted array is :: %@",sortedArray);
相关问题