【问题标题】:strange behavior in for statement (swift)for 语句中的奇怪行为(swift)
【发布时间】:2015-12-22 15:22:22
【问题描述】:

我正在使用 swift 开发一个应用程序。今天我更新了我的 Xcode(第 7 版),我收到了很多相同的警告。

问题出在 for 语句中

代码如下:

    let dict:NSDictionary
    for dict in offers_to_show{

        //do something
    }
  • offers_to_show 是一个 NSArray,它只包含 NSDictionary

我得到“不可变值 'dict' 从未使用过;考虑用 '_' 替换或删除它” 我该如何解决?

感谢您的支持, 米尔科

【问题讨论】:

    标签: swift for-loop compiler-warnings


    【解决方案1】:

    我得到“从未使用过不可变值'dict'

    这是因为有两个dict 变量:您在第一行创建的常量和for 循环中的一个。如the docs 中所述,for-in 循环中的索引变量是隐式声明的——您不需要自己声明它,因为您尝试使用 let dict... 行,同样,这实际上是一个不同范围内的单独变量。

    你没有使用第一个,所以编译器指出了这一点。您的代码没有任何变化——编译器在查找未使用的代码方面做得更好了。

    【讨论】:

      【解决方案2】:

      当您将绑定变量命名为 dict 时,您将隐藏局部变量 dict(您从未使用过)。 Swift 告诉您删除不必要的(且令人困惑的)let dict:NSDictionary 行。

      【讨论】:

      • 好的,所以我不太容易。我可以删除第一个变量,代码没有任何反应对吗?
      • 正确。第一个“让”行只是创建一个您认为自己正在使用的变量,但事实并非如此。 Swift 的 for-in 语法与 C 的 for 语法不同,其中迭代变量必须存在。在 Swift for-in 中,您在“for”之后给出的名称就是将用于每个元素的名称。它不是真正的“变量”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2013-07-13
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多