我有一个带有NSArrays名称的NSDictionary,所以自然总共有26个数组。我想将titleForHeaderInSection
(A,B,C等)设置为数组的键,将numberOfRowsInSection
设置为数组的计数。我可以通过用块枚举它们来获取每个数组的计数,但是如何基于我拥有的NSDictionary在TableView上设置这两个选项?有没有办法订购NSDictionary,所以结果是按字母顺序排列的?
这是我的NSDictionary:
@{
@"A" :
@[@"Person One", @"Person Two", @"Person Three"],
@"B" :
@[@"Person One", @"Person Two", @"Person Three", @"Person Four"],
@"C" :
@[@"Person One", @"Person Two"],
}
// etc
这是NSDictionary的NSLog:标题是否会无序?
A -- 23
B -- 78
G => 27
U => 1
H => 57
V => 6
I => 1
// etc
答案 0 :(得分:4)
字典中的条目未订购。你可以做的是创建一个数组 所有部分标题和按字母顺序排序:
NSDictionary *dict = ...; // your dictionary
NSArray *sectionTitles = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)];
然后部分的数量是
[sectionTitles count]
对于给定的节号,标题和行数可以计算为
NSString *title = sectionTitles[section];
NSUInteger numRows = [dict[sectionTitles[section]] count];
最后,对于给定的索引路径,相应的项目是
NSString *item = dict[sectionTitles[indexPath.section]][indexPath.row];