【问题标题】:Unable to get the key of a value from an NSDictionary in Xcode无法从 Xcode 中的 NSDictionary 获取值的键
【发布时间】:2020-11-22 23:20:54
【问题描述】:

我试图通过在我的 Xcode 项目中使用来自 NSDictionary 的值本身来获取值的键。我正在使用以下字典:

_itemDictionary = @{
        @"Electronics" : @[@"DVD player", @"Laptop", @"PC", @"PS4", @"Radio", @"Speaker", @"TV"],
        @"Clothing" : @[@"Air jordan", @"Bracelet", @"Fila", @"Jeans", @"T-shirt", @"Todds", @"Tag Heuer"],
        @"Cleaning products" : @[@"Ajax", @"Ariel", @"Bounty", @"Clorox", @"Dettol", @"Tide", @"Vileda"],
        @"Baby products" : @[@"Baby bottle", @"Baby milk", @"Johnson's wipes", @"Pampers"]
    };

我正在尝试获取位于表格视图单元格上的值的键,如下所示:

NSString *name = self.itemNames[indexPath.row];
        
cell.textLabel.text = name;
//get all keys for current item
NSArray *keys = [_itemDictionary allKeysForObject:name];
        
NSLog(@"%lu", (unsigned long)keys.count);

所以我意识到,无论项目名称是什么,我使用的键 NSarray 的计数始终为 0。

在此处发布此问题之前,我尝试查看建议的解决方案,但没有一个对我有帮助,这就是我发布它的原因。如果有人愿意帮忙,那将意义重大!谢谢大家。

【问题讨论】:

  • 你能不能 NSLog(@"%@",name);输出是什么?
  • 你实际上是在询问一个对象的键,这是一个没有键的数组。相反,你可以要求 allKeys,你会看到什么
  • @OlSen 我尝试 NSLog 名称,并获得了显示的 NSDictionary 的值。但我不知道为什么键 NSarray 的大小是 0
  • @OlSen 我什至尝试用文字字符串替换 allKeysForObject 中的名称,例如:@"PS4",但它也不起作用。
  • itemDictionary 的顶层只有数组作为对象,其中不匹配单个项目。你想搜索子数组。

标签: objective-c xcode nsarray nsdictionary


【解决方案1】:

因此,根据 John elemans 的提示,我意识到字典实际上包含数组。为了让我检查哪些数组包含我要查找的名称,我必须首先获取字典中的所有数组,然后遍历每个数组并检查哪个数组包含该元素。之后,我使用包含该元素的数组来获取其对应的键。

编码愉快!

【讨论】:

  • 以防万一。还有其他数据类型可能适合您的设计模式。可能像 NSMapTable。欢迎。很高兴你想出来了。 :)
猜你喜欢
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多