字典词典雨燕

问题描述:

我试图解析类型的词典[字符串:任何],我这字典中无法解析的字典为我所期望的:字典词典雨燕

var monsterDictionary = Dictionary<String, Any>() 

monsterDictionary["stringTest"] = "I'm a string" 
monsterDictionary["numberTest"] = "12345" 
monsterDictionary["arrayTest"] = [1,3,4,"five"] 
monsterDictionary["dictTest"] = ["key for number": 123.2 , "key for string" : "hello"] 
monsterDictionary["foo-values"] = ["foo-type": foo.FooValueType.fooValuePercent, "foo-value": 25] 


for fooItem in (monsterDictionary["foo-values"] as! [String: Any]) 
{ 
    let fooType = fooItem["tip-type"] 

最后分配产生以下错误:“类型”(键:字符串,值:任何)没有下标成员。“

+0

你的数据结构很奇怪。它会始终包含这些完全相同的密钥? – Alexander

+0

不,它用于测试不同的字典条目类型。只有“foo-values”会导致我遇到任何问题。 – jglasse

Dictionary进行迭代得到键/值元组。

如果你确实需要遍历所有的键/值,那么你可以这样做是这样的:

for (key, value) in (monsterDictionary["foo-values"] as! [String: Any]) { 
    print(key, value) 
} 

如果你只是希望获得价值tip-type,那么你可以这样做这个:

let fooValues = (monsterDictionary["foo-values"] as! [String: Any]) 
let fooType = ["tip-type"] as! foo.FooValueType 
+0

如果你没有指定密钥,它只会产生元组,我想。 为fooItem在(monsterDictionary [ “FOO值”]应产生: [ “富型”:foo.FooValueType.fooValuePercent, “富值”:25] ,而不是屈服 (“foo-值“,[”foo-type“:foo.FooValueType.fooValuePercent,”foo-value“:25]) 我错了吗? – jglasse

+0

下标产生'[”foo-type“:foo.FooValueType.fooValuePercent,”foo ,然后你在for循环中遍历结果,得到'(“foo-type”,foo.FooValueType.fooValuePercent)'和'(“foo-value”,25)''元组 – Alexander

+0

我被目标C等价物弄糊涂了,我正在翻译: for(NSDictionary * foo in [MonsterDictionary objectForKey:@“foo-values”]){ Foo * fooObject = [[Foo alloc] initWithFooType:(FooValueType)[[foo objectForKey:@“tip-type”] integerValue] Value:[foo objectForKey:@“foo-value”]]; – jglasse