gpt4 book ai didi

ios - NSDictionary allKeys 和 allValues 顺序变化

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:21:44 30 4
gpt4 key购买 nike

我有一个包含 TableView 的 View Controller ,对于该 TableView 的数据源,我使用包含两个键和两个值的 NSDictionary。我用对象字面量初始化字典,我还有一个 NSArray,它包含应该与字典中的值相对应的值。

NSDictionary *dict = @{@"Key1" : @"Value1", @"Key2" : @"Value2"};
NSArray *arr = @[@"Value for Key 1", @"Value for Key 2"];

在我的 TableView 的 cellForRowAtIndexPath: 中,我有以下内容

static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

cell.textLabel.text = dict.allKeys[indexPath.row];
cell.imageView.image = dict.allValues[indexPath.row];
cell.textLabel.numberOfLines = 0;

return cell;

但是,无论我初始化 dict 的顺序如何(它可以是 @{@"Key2": @"Value2", @"Key1": @"Value1"} ), 值 2 永远排在第一位。当我向字典中添加更多对象时,这会导致问题,因为 arr 中的索引必须与 dict 中的索引匹配,这个问题也会使 TableView 出现以一种不同于我想要的方式。有谁知道这里出了什么问题?

为了帮助可视化问题,这里有一个图表来演示

NSDictionary *dict = @{@"Key1" : @"Value1", @"Key2" : @"Value2"};
----------------------------------------
Table view
----------------------------------------
[Value 2] [Key 2]
----------------------------------------
[Value 1] [Key 1]
----------------------------------------
//if I change the order in the dictionary, the order in the table view remains the same
NSDictionary *dict = @{@"Key2" : @"Value2", @"Key1" : @"Value1"};
----------------------------------------
Table view
----------------------------------------
[Value 2] [Key 2]
----------------------------------------
[Value 1] [Key 1]
----------------------------------------

最佳答案

这里没有任何问题。 NSDictionary 是一个无序集合。说“我添加它们的顺序”是没有意义的。

如果您想按特定顺序访问键,那么您要么必须在字典旁边存储一个数组,要么获取键然后对它们进行排序并使用它来按该顺序访问值。

关于ios - NSDictionary allKeys 和 allValues 顺序变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26877115/

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