【问题标题】:C-style for statement has been removed in Swift 3 (Continuos error)Swift 3 中删除了 C 样式的 for 语句(Continuos 错误)
【发布时间】:2016-10-17 18:22:12
【问题描述】:

自从更新到Swift 3 后,我就遇到了这个问题。我尝试使用stride(from:to:by:) 将其更新为Swift 3,但我无法将旧的Swift 2 代码实现为Swift 3 代码。下面我包含了我的代码:

for var i = 0; i <= self.senderArray.count - 1; i += 1 {

  if self.senderArray[i] == userName {

         self.other2Array.append(self.otherArray[i])
  }
  else {    

     self.other2Array.append(self.senderArray[i])
  }              

  self.message2Array.append(self.messageArray[i])
  self.sender2Array.append(self.senderArray[i])

  }

我得到的错误:

在 Swift 3 中删除了 C 风格的 for 语句

下面这个方法我试过了,还是不行:

for i in 0 ..< self.senderArray.count

在有人将此问题标记为重复之前,我已经查看了以下问题,但由于某种原因,我无法弄清楚如何将我的代码实现到更新的 Swift 3 代码中。

#warning: C-style for statement is deprecated and will be removed in a future version of Swift

How to fix C-style for statement?

Fix warning "C-style for Statement is deprecated" in Swift 3

https://stackoverflow.com/questions/37814867/fix-c-style-for-statement-is-deprecated-in-swift

【问题讨论】:

  • 更新您的问题,尝试在 Swift 3 中编写 for 循环并解释您遇到的问题。
  • 你看过任何示例代码吗?
  • for i in 0 ..&lt; self.senderArray.count - 例如在您的第一个参考资料中展示的 - 不起作用?
  • “现在我知道我哪里出错了” – 我很高兴你的问题得到了解决。请更新您的问题,以便实际问题不仅对您而且对我们来说都变得显而易见。没有明确问题陈述的问题对于该线程的未来读者没有价值,并且是题外话。
  • @MartinR 感谢您的理解。当别人指出问题时,这一切都是有道理的!

标签: ios arrays for-loop swift3


【解决方案1】:

使用enumerated 保持索引很容易:

for (i, sender) in senderArray.enumerated() {
    // Can simply use 'sender' here, no need to index into senderArray.
    if sender == userName {
       ...

    // Unchanged lines; 'i' is used as index here.   
    self.message2Array.append(self.messageArray[i])
    self.sender2Array.append(self.senderArray[i])

}

【讨论】:

  • 谢谢,格雷厄姆!我知道我哪里出错了。谢谢你帮助我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多