Objective-C 从数组创建字典

Objective-C create dictionary from array

我有一个名为 tableView 的 NSArray,我试图将所有对象放入 NSDictionary,但有一点不同。我的数组按字母顺序排列,如下所示:

我想做的是将它们放在我开始使用的 NSDictionary 中:

NSDictionary *contactDirectory = @{
                @"A" : @[],
                @"B" : @[],
                @"C" : @[],
                @"D" : @[],
                @"E" : @[],
                @"F" : @[],
                @"G" : @[],
                @"H" : @[],
                @"I" : @[],
                @"J" : @[],
                @"K" : @[],
                @"L" : @[],
                @"M" : @[],
                @"N" : @[],
                @"O" : @[],
                @"P" : @[],
                @"Q" : @[],
                @"R" : @[],
                @"S" : @[],
                @"T" : @[],
                @"U" : @[],
                @"V" : @[],
                @"W" : @[],
                @"X" : @[],
                @"Y" : @[],
                @"Z" : @[]
                };

因此,如果字母以 A 开头,请将其放在 A 列中。 Vendor_Name 和 Vendor 都需要在其中,但按原样按 Vendor_Name 排序。我的问题是完成我想要的下一步是什么

  1. 创建一个空字典:

    NSMutableDictionary *contactDirectory = [NSMutableDictionary new];
    
  2. 迭代当前数组并将对象插入到表示的大写字母中:

    for (NSInteger i = 0; i < tableData.count; i++) {
        NSDictionary *tmp = tableData[i];
        NSString *firstLetter = [[tmp objectForKey:@"Vendor_Name"] substringToIndex:1];
        if (![contactDirectory objectForKey:firstLetter]) {
            [contactDirectory setObject:[NSMutableArray new] forKey:firstLetter];
        }
        [[contactDirectory objectForKey:firstLetter] addObject:tmp];
    } 
    
  3. 使用排序描述符对每个子数组进行排序:

    NSMutableDictionary *contactDirectoryFinal = [NSMutableDictionary new];
    NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"Vendor_Name" ascending:YES];
    for (NSString *key in contactDirectory.allKeys) {
        [contactDirectoryFinal setObject:[[contactDirectory objectForKey:key] sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]] forKey:key];
    }
    

contactDirectoryFinal 包含您需要的内容。