ios - 根据数组字符转换数组格式

标签 ios dictionary formatting nsarray

我有这种格式的数组

rows = [[NSArray alloc] initWithObjects:@"adam", @"alfred", @"ain", @"abdul", @"anastazja", @"angelica",
                    @"dennis" , @"deamon", @"destiny", @"dragon", @"dry", @"debug" @"drums",
                    @"Fredric", @"France", @"friends", @"family", @"fatish", @"funeral",
                    @"Mark", @"Madeline",
                    @"Nemesis", @"nemo", @"name",
                    @"Obama", @"Oprah", @"Omen", @"OMG OMG OMG", @"O-Zone", @"Ontario",
                    @"Zeus", @"Zebra", @"zed", nil];

但我需要按照以下格式

rows = @[@[@"adam", @"alfred", @"ain", @"abdul", @"anastazja", @"angelica"],
             @[@"dennis" , @"deamon", @"destiny", @"dragon", @"dry", @"debug", @"drums"],
             @[@"Fredric", @"France", @"friends", @"family", @"fatish", @"funeral"],
             @[@"Mark", @"Madeline"],
             @[@"Nemesis", @"nemo", @"name"],
             @[@"Obama", @"Oprah", @"Omen", @"OMG OMG OMG", @"O-Zone", @"Ontario"],
             @[@"Zeus", @"Zebra", @"zed"]];

表示不同字典中相同的起始字符

最佳答案

最简单的方法。

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

请注意,finalRows 未排序。

关于ios - 根据数组字符转换数组格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23309162/

相关文章:

python - 保存时格式化会删除 VS-Code 中的导入语句

iphone - 访问 UIWindow 的 rootViewController?

ios - 在 iOS 中使用图像(png、jpg)的最佳格式是什么?

python-3.x - 如何从复杂字典中提取嵌套数据并从中提取嵌套数据以构建新字典?

java - 如何以相反的顺序对 guava Multimap 键进行排序?

python - 根据单独的字典有条件地创建字典

c# - 日期时间格式小时加一

formatting - 如何在代码/预 block 中添加 Markdown 格式?

ios - 在swift中使用继承对象的方法

ios - 为什么我要在 swift 中创建一个单例而不是仅仅将函数转储到一个文件中?