#warning:C-style for语句已弃用,将在未来的Swift版本中删除

时间:2016-03-23 08:43:49

标签: ios objective-c swift swift2.2

我只是使用swift 2.2下载一个新的Xcode(7.3)。

它有一个警告:

  

不推荐使用C-style for语句,将在未来的Swift版本中删除。

如何修复此警告?

4 个答案:

答案 0 :(得分:76)

删除for init; comparison; increment {}并轻松删除++--。并使用Swift的漂亮for-in循环

   // WARNING: C-style for statement is deprecated and will be removed in a future version of Swift
   for var i = 1; i <= 10; i += 1 {
      print("I'm number \(i)")
   }

Swift 2.2:

   // new swift style works well
   for i in 1...10 {
      print("I'm number \(i)")
   }  

对于减量索引

  for index in 10.stride(to: 0, by: -1) {
      print(index)
  }

或者您可以使用reverse()之类的

  for index in (0 ..< 10).reverse() { ... }

适用于浮动类型(there is no need to define any types to index)

 for index in 0.stride(to: 0.6, by: 0.1) {
     print(index)  //0.0 ,0.1, 0.2,0.3,0.4,0.5
 }  

Swift 3.0:

来自Swift3.0,Strideable上的stride(to:by:)方法已替换为免费功能stride(from:to:by:)

for i in stride(from: 0, to: 10, by: 1){
    print(i)
}

对于Swift 3.0中的减量索引,您可以使用reversed()

for i in (0 ..< 5).reversed() {
    print(i) // 4,3,2,1,0
}

enter image description here

除了for eachstride()之外,您可以使用While Loops

var i = 0
while i < 10 {
    i += 1
    print(i)
}

Repeat-While Loop:

var a = 0
repeat {
   a += 1
   print(a)
} while a < 10

查看The Swift Programming Language Guide

中的控制流程

答案 1 :(得分:4)

对于这种“for”循环:

for var i = 10; i >= 0; --i {
   print(i)
}

你可以写:

for i in (0...10).reverse() {
    print(i)
}

答案 2 :(得分:2)

我在这段代码中遇到了同样的错误:

for (var i = 1; i != video.getAll().count; i++) {
    print("show number \(i)")
}

当你尝试使用Xcode修复它时,你没有运气......所以你需要使用新的swift风格(for in循环):

for i in 1...video.getAll().count {
    print("show number \(i)")
}

答案 3 :(得分:0)

  

块引用

改为使用

if(myarr.count)
{
    for i in 1...myarr?.count {
      print(" number is \(i)")
    }
}