我有一个名为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排序。我的问题是实现我想要的下一步是什么
答案 0 :(得分:1)
创建一个空字典:
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
包含您需要的内容。