我有一个像messageID5
这样的密钥的NSDictionary,并且该值有三个键/值对。
我知道NSDictionary中只有1个值,因为我将查询限制为1.但我不知道密钥的名称。我只想要这个值,但我无法像数组[0]那样访问它。你可以用PHP或Python访问它。我已经为这个基本问题尝试了很多不同的解决方案,但是很多都看起来过于混乱。 anyValue [0]给我一个类型错误。
答案 0 :(得分:3)
如果你不知道你的字典键,你可以获得你的NSDictionary allKeys.first属性或allValues.first:
let dict = NSDictionary(dictionary: ["a":["b":1]])
let subDict = dict[dict.allKeys.first] as? [String:Any] ?? [:] // ["b": 1]
// or
let subDict = dict.allValues.first as? [String:Any] ?? [:] // ["b": 1]
答案 1 :(得分:2)
首先要承认的是,字典中的键/值对不会保持任何特定的顺序 - 这是访问此结构内容时优化所必需的。
至于您的情况,如果您100%确定词典中只有一个值,则可以使用.allValues.first
来检索包含的值。如果您知道值的类型为NSDictionary
,则整个代码可能如下所示:
let childDictionary = rootDictionary.allValues.first as? NSDictionary
答案 2 :(得分:0)
我建议使用(dictionary as Dictionary).values.first
。返回一个可选项,因为如果字典为空,它可能会失败。
(请注意,我编辑了此答案,将字典从NSDictionary
投射到Dictionary
,以便您使用values
属性。NSDictionary
不会有一个values属性,但Dictionary
有。)