ios - 如何在iOS中使用字典对数组进行排序

标签 ios sorting nsarray nsdictionary alphabetical

我以这种方式有一个数组。

rows1 (
    "Adam Harris",
    "Devraj Singh",
    "Devraj Singh",
    "Er Devraj Gurjar",
    "Ghh HHS",
    "Mark Json",
    "Ninehertz India",
    "Ninehertz India",
    "Test User",
    "Test Test",
    "Yatin TFT"
)

我用下面的代码
NSArray *rows = ...;
    NSMutableDictionary *map = [NSMutableDictionary dictionary];
    for (NSString *value in rows) {
        NSString *firstLetter = [value substringToIndex:1];
        if (!map[firstLetter]) {
            map[firstLetter] = @[];
        }
        NSMutableArray *values = [map[firstLetter] mutableCopy];
        [values addObject:value];
        map[firstLetter] = values;
    }
    NSArray *finalRows = [map allValues];

按字母顺序对数组排序。排序有两个条件。1)所有以相同字母开头的单词都应分组,这是我实现的,如下面的数组所示。现在我的问题是我想按字母顺序排列所有分组的项目。 2.)现在,数组的所有分组元素都应按字母顺序排序。以下是我所取得的成就。
 (
            (
            "Devraj Singh",
            "Devraj Singh"
        ),
            (
            "Mark Json"
        ),
            (
            "Er Devraj Gurjar"
        ),
            (
            "Adam Harris"
        ),
            (
            "Ninehertz India",
            "Ninehertz India"
        ),
            (
            "Test User",
            "Test Test"
        ),
            (
            "Ghh HHS"
        ),
            (
            "Yatin TFT"
        )
    )

我想做的如下
(
                (
                "A1",
                "A2"
            ),
                (
                "B1"
            ),
                (
                "C1"
            ),
                (
                "D1"
            ),
                (
                "E1",
                "E2",
                "E3"
            ),
                (
                "F1",
                "F2"
            ),
                (
                "G1"
            ),
                (
                "H1"
            )
        )

最佳答案

最简单的解决方案是将最后一行更改为:

NSArray *finalRows = [[map allValues] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSString *letter1 = [obj1[0] substringToIndex:1];
        NSString *letter2 = [obj2[0] substringToIndex:1];
        return [letter1 compare:letter2];
    }];

这不是最有效的解决方案,但可以。

关于ios - 如何在iOS中使用字典对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23761466/

相关文章:

c++ - std::sort 用于 C++ 中的二维 vector

objective-c - 如何对 NSArray 进行二分查找?

ios - UIButton 上的 UILabel 突变导致文本不显示/显示对齐错误

javascript - 在比较器中使用 "less/greater than"比较运算符对字符串进行排序

sorting - 在 golang 中对表格进行排序

objective-c - 如何将 JSON 数组转换为 NSArray

iphone - NSDirectoryEnumerator 和子文件夹

php - 将图像从 iOS 应用程序上传到 php --- 不太正确 --- 我错过了什么?

iOS 开发 : Segue by pressing a button in an Alert?

ios - 是什么让用户可以被 CKDiscoverAllUserIdentitiesOperation 发现?