gpt4 book ai didi

ios - 在 TableView 中显示具有相同键的多个对象

转载 作者:行者123 更新时间:2023-11-28 18:36:27 25 4
gpt4 key购买 nike

我目前有一个字典属性`scoreDictionary 构造,因此它包含本身是嵌套字典的值:

{
Bob = {
"2013-08-02 00:27:02 +0000" = 70;
"2013-08-02 00:28:17 +0000" = 60;
};
Robert = {
"2013-08-02 02:53:19 +0000" = 1137;
};
Mooga = {
"2013-08-02 02:53:04 +0000" = 80;
};
}

我能够为所需的方法 tableView: numberOfRowsInSection: 返回正确的行数,但是在编写 tableView: cellForRowAtIndexPath: 时遇到问题。具体来说,由于必须有 行显示相同的键“Bob”,但具有不同的分数和日期信息,我该如何处理 indexPath.row 以便它是尽管具有相同的 key ,但每次调用时都能为单元格返回不同的信息?

谢谢!

最佳答案

不清楚您希望输出是什么样的。如果你想要部分,名称是部分标题,你可以像下面那样做。由于您的数据结构,获取正确的数据看起来很复杂(使用字典数组会容易得多)。

- (void)viewDidLoad {
[super viewDidLoad];
self.theData = @{@"Bob":@{@"2013-08-02 00:27:02 +0000":@70, @"2013-08-02 00:28:17 +0000":@60}, @"Robert":@{@"2013-08-02 02:53:19 +0000":@1137}, @"Mooga":@{@"2013-08-02 02:53:04 +0000":@80}};
self.keys = self.theData.allKeys;
[self.tableView reloadData];
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"sections are: %d",self.keys.count);
return self.keys.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.theData[self.keys[section]] count];
}

-(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return self.keys[section];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [self.theData[self.keys[indexPath.section]] allKeys][indexPath.row];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",[self.theData[self.keys[indexPath.section]] valueForKey:[self.theData[self.keys[indexPath.section]] allKeys][indexPath.row]] ];
return cell;
}

这给出了这个输出(使用正确的详细信息单元格类型):

enter image description here

如果您不需要章节标题,您可以删除 titleForHeaderInSection 方法,并将 cellForRowAtIndexPath 方法更改为:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
NSString *name = self.keys[indexPath.section];
NSString *date = [self.theData[self.keys[indexPath.section]] allKeys][indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@ %@",name,date];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",[self.theData[self.keys[indexPath.section]] valueForKey:[self.theData[self.keys[indexPath.section]] allKeys][indexPath.row]] ];
return cell;
}

唯一的问题是对于较长的名称,日期和时间字符串太长并且会截断数字值。因此,您要么需要缩短该字符串,要么转到单元格的字幕类型,其中该数字将位于单独的一行。

关于ios - 在 TableView 中显示具有相同键的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18039955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com