我有两个NSMutableArrays
:searchResults
和searchResultsDetails
。我使用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];
答案 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);