[英]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排序。 我的问题是要完成我想要的下一步
创建一个空字典:
NSMutableDictionary *contactDirectory = [NSMutableDictionary new];
遍历当前数组,然后将对象插入所表示的大写字母:
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]; }
使用排序描述符对每个子数组进行排序:
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.