【问题标题】:Dictionary get nil [closed]字典得到零[关闭]
【发布时间】:2018-09-05 14:08:23
【问题描述】:

xcode 有什么问题?获取密钥 9.0 的 nil

  @IBAction func sliderAction(_ sender: UISlider) {
        speed = round(sender.value / step) * step
        sender.value = speed
        speedLabel.text = modeDict[sender.value]
        print(sender.value)
        print(speedLabel.text)
    }

    let modeDict : [Float : String] = [ 0.8 : "Pls delete game, you noob", 0.9 : "Pff, girl", 1.0 : "Optimal", 1.1 : "Very Hard", 1.2 : "Almost Unreal"]
    let step : Float = 0.1
    var speed : Float = 0.0

    //

打印那么,为什么是 9.0 -> nil ?

0.8 可选(“请删除游戏,你这个菜鸟”)

0.9 无

1.0 可选(“最佳”)

1.1 可选(“非常难”)

1.2 可选的(“几乎是虚幻的”)

【问题讨论】:

  • why 9.0 -> nil....9.0 还是 0.9 ?
  • Float 是二进制浮点数,不能 准确地表示值0.9。因此,使用 Float 或 Double 作为字典键是有问题的。
  • 试试print(modeDict),你会看到..., 0.899999976: "Pff", ...
  • 也许它对你有帮助(尽管它适用于 python,但方法相似)stackoverflow.com/questions/23721230/…
  • @MartinR,谢谢

标签: ios swift


【解决方案1】:

最好将键移动 10

let modeDict : [Float : String] = [ 8 : "Pls delete game, you noob", 9 : "Pff, girl", 10 : "Optimal", 11 : "Very Hard", 12 : "Almost Unreal"]

并使用

speedLabel.text = modeDict[sender.value*10]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    相关资源
    最近更新 更多