Swift NSDictionary在不知道密钥名称的情况下获得第0个值

时间:2017-04-16 22:34:40

标签: ios swift

我有一个像messageID5这样的密钥的NSDictionary,并且该值有三个键/值对。

我知道NSDictionary中只有1个值,因为我将查询限制为1.但我不知道密钥的名称。我只想要这个值,但我无法像数组[0]那样访问它。你可以用PHP或Python访问它。我已经为这个基本问题尝试了很多不同的解决方案,但是很多都看起来过于混乱。 anyValue [0]给我一个类型错误。

3 个答案:

答案 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有。)