我有一个NSMutableArray *arr1
价值观:
{(B,abc) (E,pqr) (C,xyz)}
还有NSMutableArray *arr2
一个
{(B) (C) (E)}
.
现在我想arr1
使用arr2
value 进行排序,这样arr1
就变成了{(B,abc) (C,xyz) (E,pqr)}
. 我怎样才能做到这一点?
我有一个NSMutableArray *arr1
价值观:
{(B,abc) (E,pqr) (C,xyz)}
还有NSMutableArray *arr2
一个
{(B) (C) (E)}
.
现在我想arr1
使用arr2
value 进行排序,这样arr1
就变成了{(B,abc) (C,xyz) (E,pqr)}
. 我怎样才能做到这一点?
因此,您似乎有一个数组和一个数组数组:
NSArray *sorter = @[@"B", @"C", @"E"];
NSMutableArray *sortee = [@[
@[@"B", @"abc"],
@[@"E", @"pqr"],
@[@"C", @"xyz"]
] mutableCopy];
[sortee sortUsingComparator:^(id o1, id o2) {
NSString *s1 = [o1 objectAtIndex:0];
NSString *s2 = [o2 objectAtIndex:0];
NSInteger idx1 = [sorter indexOfObject:s1];
NSInteger idx2 = [sorter indexOfObject:s2];
return idx1 - idx2;
}];
试试这个,
NSMutableArray *unsortedArray = [NSMutableArray arrayWithObjects:[NSArray arrayWithObjects:@"B",@"abc", nil],[NSArray arrayWithObjects:@"E",@"pqr", nil],[NSArray arrayWithObjects:@"C",@"xyz", nil],nil];
NSArray *guideArray = [NSArray arrayWithObjects:@"B",@"C",@"E", nil];
for(int i=0; i< [guideArray count];i++)
{
for(int j=0; j< [unsortedArray count];j++)
{
if([[unsortedArray objectAtIndex:j] containsObject:[guideArray objectAtIndex:i]])
{
[unsortedArray exchangeObjectAtIndex:j withObjectAtIndex:i];
break;
}
}
}
NSLog(@"%@",unsortedArray);
我已经对此进行了测试并为我工作。希望这对您有所帮助。