繁体   English   中英

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包含您所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM