Ранее я задал вопрос, похожий на этот вопрос, однако ответ, похоже, не работает.Unwrapping Дополнительный тип Любой из словаря
У меня есть словарь под названием Настройки: Настройки
Var = Строка: Любой
Это заполняется путем чтения текстового файла - все работает отлично
, когда я запускаю 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, как если бы клавиши, которые я предоставляю, не существуют, возвращают нуль и, следовательно, устанавливают переменную в 0.0
Может ли кто-нибудь помочь?
Может быть, потому что вы не можете бросить объекты примитивов? Попробуйте использовать '.doubleValue()' вместо 'as? Double'. –
Привет, Ян, неуверенный относительно того, что вы предлагаете. Пожалуйста, не могли бы вы объяснить дальше? – Ryann786
'var settings = String: Any' Почему? Почти невозможно использовать Any; AnyObject лучше, если вы это сделаете. И все ваши ценности - Double. – matt