我有一个NSMutableDictionary,如下所示,
NSMutableDictionary *aSite;
NSArray *aDocs=[[NSArray alloc]initWithObjects:@"aaaa",@"bbbb",@"cccc", nil];
NSArray *bDocs=[[NSArray alloc]initWithObjects:@"aaaa",@"bbbb",@"cccc", nil];
NSArray *cDocs=[[NSArray alloc]initWithObjects:@"aaaa",@"bbbb",@"cccc", nil];
aSite=[[NSMutableDictionary alloc]init];
[aSite setObject:aDocs forKey:@"A library"];
[aSite setObject:bDocs forKey:@"B library"];
[aSite setObject:cDocs forKey:@"C library"];
现在,我必须将键显示为部分,将值显示为部分中的行,如何做到这一点?请帮忙
答案 0 :(得分:1)
您将获得NSArray中的所有密钥,如:
NSArray*sectionArray =[aSite allKeys];
使用此表后,使用表视图数据源方法设置标题和表行:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return sectionArray.count;
}
和
– tableView:numberOfRowsInSection:
– tableView:cellForRowAtIndexPath:
在那些方法中,你必须有条件地加载单元格。
答案 1 :(得分:1)
在你的UITableViewDataSource实现中:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return aSite.allKeys.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *arrayKey = [aSite.allKeys objectAtIndex:section];
NSArray *a = [aSite objectForKey:arrayKey];
return a.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
NSString *arrayKey = [aSite.allKeys objectAtIndex:indexPath.section];
NSArray *a = [aSite objectForKey:arrayKey];
cell.textLabel.text = [a objectAtIndex:indexPath.row];
return cell;
}
请注意,allKeys
和allValues
没有定义特定的顺序(来自文档,"数组中元素的顺序未定义")。在将表数据加载到表视图之前,我会将您的结构转换为数组数组。
答案 2 :(得分:0)
抓住你的"数组字典"和:
取所有values
,并组装一个数组数组。每个数组代表表视图的一个部分的所有行。
获取所有keys
,并将它们组合成NSString
的数组。使用此作为表视图的节名称。