所以我有一个'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,并应用排序算法?如果是这样,怎么样?任何帮助,包括示例代码和可能的排序程序都会很棒!
答案 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"];