Ios 根据数组字符转换数组格式

Ios 根据数组字符转换数组格式,ios,dictionary,formatting,nsarray,Ios,Dictionary,Formatting,Nsarray,我有这种格式的数组 rows = [[NSArray alloc] initWithObjects:@"adam", @"alfred", @"ain", @"abdul", @"anastazja", @"angelica", @"dennis" , @"deamon", @"destiny", @"dragon", @"dry", @"debug" @"drums", @"Fredric", @"France",

我有这种格式的数组

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
未排序。

最简单的方法

    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
未排序。

如果要按数组的第一个字母排序,可以尝试以下操作:

NSMutableArray *outputArray = [NSMutableArray new];

NSString *lastFirstLetter = nil;
for(NSString *value in rows) {
    NSString *firstLetter = [[value substringToIndex:1] lowerString];
    if(![lastFirstLetter isEqualToString:firstLetter]) {
        lastFirstLetter = firstLetter;
        [outputArray addObject:[NSMutableArray new]];
    }
    [[outputArray lastObject] addObject:value];
} 

其思想是迭代输入数组,如果单词的第一个字母与前面的不同,则创建一个新数组。

如果要按数组的第一个字母对数组进行排序,可以尝试以下方法:

NSMutableArray *outputArray = [NSMutableArray new];

NSString *lastFirstLetter = nil;
for(NSString *value in rows) {
    NSString *firstLetter = [[value substringToIndex:1] lowerString];
    if(![lastFirstLetter isEqualToString:firstLetter]) {
        lastFirstLetter = firstLetter;
        [outputArray addObject:[NSMutableArray new]];
    }
    [[outputArray lastObject] addObject:value];
} 

其思想是迭代输入数组,如果单词的第一个字母与前一个不同,则创建一个新数组。

您的示例是数组,而不是字典。你试过(展示)什么代码,它做错了什么?你的示例是数组,而不是字典。你试过(展示)什么代码?它做错了什么?这工作很好,谢谢,但这是代码中的一个小问题。你能按字母顺序把它分类吗。(“德夫拉吉·辛格”、“德夫拉吉·辛格”)、(“马克·Json”)、(“德夫拉吉·古贾”)、(“亚当·哈里斯”)、(“尼尼赫茨印度”、“尼尼赫茨印度”)、(“测试用户”、“测试测试”)、(“Ghh HHS”),(“Yatin TFT”))这工作很好,谢谢,但它们在这段代码中是一个小问题。你能按字母顺序把它分类吗。(“德夫拉吉·辛格”、“德夫拉吉·辛格”)、(“马克·Json”)、(“德夫拉吉·古贾”)、(“亚当·哈里斯”)、(“尼尼赫茨印度”、“尼尼赫茨印度”)、(“测试用户”、“测试测试”)、(“Ghh HHS”),(“Yatin TFT”))这工作很好,谢谢,但它们在这段代码中是一个小问题。你能按字母顺序把它分类吗。(“德夫拉吉·辛格”、“德夫拉吉·辛格”)、(“马克·Json”)、(“德夫拉吉·古贾”)、(“亚当·哈里斯”)、(“尼尼赫茨印度”、“尼尼赫茨印度”)、(“测试用户”、“测试测试”)、(“Ghh HHS”),(“Yatin TFT”))您可以使用以下命令对数组排序:[outputArray sortUsingSelector:@selector(compare:)];这是很好的工作,谢谢,但他们在这段代码中是一个小问题。你能按字母顺序把它分类吗。(“德夫拉吉·辛格”、“德夫拉吉·辛格”)、(“马克·Json”)、(“德夫拉吉·古贾”)、(“亚当·哈里斯”)、(“尼尼赫茨印度”、“尼尼赫茨印度”)、(“测试用户”、“测试测试”)、(“Ghh HHS”),(“Yatin TFT”))您可以使用以下命令对数组排序:[outputArray sortUsingSelector:@selector(compare:)];