从字典中解包可选类型Any

时间:2015-02-10 22:30:11

标签: ios xcode swift dictionary forced-unwrapping

我之前曾问过类似的问题,但答案似乎没有效果。

我有一个名为Settings的字典:

var settings = String:Any

这是通过阅读文本文件来填充的 - 一切正常

当我运行println(settings)时,它会返回填充的字典。

[monsterRate:1.0,monsterMinSpeed:10.0,weaponPickupRate:10.0,weaponPickupAmount:50.0,goldPerMonster:10.0,totalMonsters:10.0,LevelNum:1.0,monsterMaxSpeed:15.0]

如果我运行println(settings["monsterMinSpeed"]),则返回可选(" 10.0")

但是,当我尝试将变量设置为字典所包含的值时,它不起作用:

    monsterMinSpeed = (settings["monsterMinSpeed"] as? Double) ?? 0.0
    monsterMaxSpeed = (settings["monsterMaxSpeed"] as? Double) ?? 0.0
    monsterRate = (settings["monsterRate"] as? Double) ?? 0.0
    weaponPickupAmount = (settings["weaponPickupAmount"] as? Double) ?? 0.0
    weaponPickupKills = (settings["weaponPickupKills"] as? Double) ?? 0.0
    goldPerMonster = (settings["goldPerMonster"] as? Double) ?? 0.0

即使字典中有值,它总是使用0.0,好像我提供的键不存在 - 返回nil并因此将变量设置为0.0

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

那些是以字符串形式出现的,而不是数字 - 尝试类似:

monsterMinSpeed = (settings["monsterMinSpeed"] as? NSString)?.doubleValue ?? 0.0