如何在ios的表视图中将字典键显示为节和值作为行?

时间:2014-04-23 03:27:38

标签: ios7

我有一个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"];

现在,我必须将键显示为部分,将值显示为部分中的行,如何做到这一点?请帮忙

3 个答案:

答案 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;
}

请注意,allKeysallValues没有定义特定的顺序(来自文档,"数组中元素的顺序未定义")。在将表数据加载到表视图之前,我会将您的结构转换为数组数组。

答案 2 :(得分:0)

抓住你的"数组字典"和:

  1. 取所有values,并组装一个数组数组。每个数组代表表视图的一个部分的所有行。

  2. 获取所有keys,并将它们组合成NSString的数组。使用此作为表视图的节名称。