Xcode按objectKey中的大小排序数组

时间:2015-05-12 21:03:58

标签: objective-c arrays xcode sorting nsarray

所以我有一个'id friendData'类型的对象存储在单例类'coreData'中,我从中生成一个可变数组,用于对象键“data”,如下所示:

NSMutableArray *friends = [_coreData.friendData objectForKey:@"data"];

然后我建立了一个字典,它使用键“id”和“name”获取用户参数,以及通过HTTP post请求获得的NSMutable数组*分数。

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'的相同顺序。这是不可能的,或者更好的是在适当的密钥下将* score对象重新引入* friends,并应用排序算法?如果是这样,怎么样?任何帮助,包括示例代码和可能的排序程序都会很棒!

1 个答案:

答案 0 :(得分:-1)

在将分数数组设置到字典之前对其进行排序。我不确定你在分数中究竟是什么类型的对象,我猜他们是纯粹的NStrings。在这种情况下,这应该有效:

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"];