加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 使用不同的键对NSDictionary的NSArray进行排序的

发布时间:2020-12-16 09:45:53 所属栏目:百科 来源:网络整理
导读:我正在努力寻找一种像这样排序NSArray的好方法: 它是一组NSDictionarys,我用它来跟踪长字符串中每个单词的外观.所以它可能看起来像这样: [{"hello",5},{"world",10},{"this",1},{"that",3}] 现在我想按值对这个NSDictionary进行排序,这样它看起来像这样:
我正在努力寻找一种像这样排序NSArray的好方法:

它是一组NSDictionarys,我用它来跟踪长字符串中每个单词的外观.所以它可能看起来像这样:

[{"hello",5},{"world",10},{"this",1},{"that",3}]

现在我想按值对这个NSDictionary进行排序,这样它看起来像这样:

[{"world",{"hello",3},1}]

我已经查看了NSSortDescriptor和sortDesciptors的initWithKey方法,但它要求键的名称相同,这不适用于我的情况.

你建议我在这种情况下使用什么?先感谢您!

解决方法

也许不是最有效的方式,但这样做

NSArray * d = @[@{@"world": @10},@{@"hello": @5},@{@"that": @3},@{@"this": @1}];
[d sortedArrayUsingComparator:^NSComparisonResult(NSDictionary * obj1,NSDictionary * obj2) {
    NSNumber * v1 = obj1[[obj1 allKeys][0]];
    NSNumber * v2 = obj2[[obj2 allKeys][0]];
    return [v1 compare:v2];
}];

无论如何,数据组织不太适合这项任务.由于内部数据结构是字典,因此收集值非常麻烦.您可以考虑将内部数组作为数组.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读