Objective c Xcode在objectKey中按大小对数组排序

Objective c Xcode在objectKey中按大小对数组排序,objective-c,arrays,xcode,sorting,nsarray,Objective C,Arrays,Xcode,Sorting,Nsarray,因此,我有一个类型为“id friendData”的对象存储在一个单例类“coreData”中,我从中为对象键数据生成一个可变数组,如下所示: NSMutableArray *friends = [_coreData.friendData objectForKey:@"data"]; 然后,我建立了一个字典,该字典使用keys id和name获取用户参数,以及通过HTTP post请求获得的NSMutable array*分数 NSMutableDictionary *directory =

因此,我有一个类型为“id friendData”的对象存储在一个单例类“coreData”中,我从中为对象键数据生成一个可变数组,如下所示:

NSMutableArray *friends = [_coreData.friendData objectForKey:@"data"];
然后,我建立了一个字典,该字典使用keys id和name获取用户参数,以及通过HTTP post请求获得的NSMutable array*分数

NSMutableDictionary *directory = [NSMutableDictionary dictionary];
[directory setObject:[friends valueForKey:@"id"] forKey:@"id"];
[directory setObject:[friends valueForKey:@"name"] forKey:@"name"];
[directory setObject:scores forKey:@"score"];

为了记分板的目的,我想从最高到最低排列对象分数,但我的理解是,在字典中重新排列不会保持对象“id”和“name”的相同顺序。这实际上是可能的,还是最好在适当的键下重新将*scores对象引入*friends,并应用排序算法?如果是,怎么做?任何帮助,包括示例代码和可能的排序过程都将非常好

只需对分数数组排序,然后再将其设置到字典中即可。我不确定你的分数中到底有什么样的东西,我猜它们是普通的戒指。在这种情况下,这应该是可行的:

NSArray *sortedArray = [scores sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    NSInteger first = [(NSString *)a intValue];
    NSDate *second = [(NSString *)b intValue];
    return [first compare:second];
}];

NSMutableDictionary *directory = [NSMutableDictionary dictionary];
[directory setObject:[friends valueForKey:@"id"] forKey:@"id"];
[directory setObject:[friends valueForKey:@"name"] forKey:@"name"];
[directory setObject:sortedScoresArray  forKey:@"score"];

那么,我是否会遇到这样的问题:分数的索引值与id和name中的相应值不匹配?然后,我必须对其他两个数组执行相同的重新排列,并使用某种引用?是的,它们是弦。谢谢