【问题标题】:Xcode Sort Arrays by size in objectKeyXcode在objectKey中按大小对数组进行排序
【发布时间】:2015-05-12 21:03:58
【问题描述】:

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

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

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

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 并应用排序算法是否更好?如果是这样,怎么做?任何帮助,包括示例代码和可能的排序过程都会很棒!

【问题讨论】:

    标签: objective-c arrays xcode sorting nsarray


    【解决方案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"];
    

    【讨论】:

    • 那我会不会遇到分数的索引值与id和name中的相应值不匹配的问题?然后我必须对其他两个数组执行相同的重新排列并提供某种参考?是的,它们是字符串。谢谢
    猜你喜欢
    • 2016-01-06
    • 2016-07-18
    • 2012-03-16
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多