SNo*_*Nos 30 for-loop compiler-warnings swift swift2
我已更新Xcode
到7.3,现在我对用于创建随机字符串的函数发出警告.
我试图改变for
声明, for (i in 0 ..< len){...}
但是警告变成了错误.
如何删除警告?
static func randomStringWithLength (len : Int) -> NSString {
let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
let randomString : NSMutableString = NSMutableString(capacity: len)
for (var i=0; i < len; i += 1){ // warning
let length = UInt32 (letters.length)
let rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(rand)))
}
return randomString
}
Run Code Online (Sandbox Code Playgroud)
Cod*_*ent 62
for
在Swift 3中已经弃用了C风格的循环.你可以继续使用它一段时间,但它们肯定会在将来消失.
您可以将循环重写为Swift的样式:
for i in 0..<len {
let length = UInt32 (letters.length)
let rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(rand)))
}
Run Code Online (Sandbox Code Playgroud)
由于您根本不在i
循环体中使用,因此可以将其替换为:
for _ in 0..<len {
// do stuffs
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*mon 22
这个博客救了我的命.
递增
for i in 0 ..< len {
}
Run Code Online (Sandbox Code Playgroud)
递减的
for i in (0 ..< len).reverse() {
}
Run Code Online (Sandbox Code Playgroud)
非顺序索引
在哪里使用
for i in (0 ..< len) where i % 2 == 0 {
}
Run Code Online (Sandbox Code Playgroud)
使用跨越或通过
for i in 0.stride(to: len, by: 2) {
}
Run Code Online (Sandbox Code Playgroud)
在Swift 3中,这是一个错误
发布了一些常规替换,只需添加
对于Swift 3并需要更改"索引"
for var index in stride(from: 0, to: 10, by: 1){}
Run Code Online (Sandbox Code Playgroud)
我在以下方面取得了成功.您可以按如下方式使用for循环 - 请注意for循环是包含的,因此您可能需要检查len实际上是否大于0:
for i in 0...len - 1 {
let length = UInt32 (letters.length)
let rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(rand)))
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用此:
for i in 0 ..< len {
let length = UInt32 (letters.length)
let rand = arc4random_uniform(length)
randomString.appendFormat("%C", letters.characterAtIndex(Int(rand)))
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,看起来XCode 7.x 确实帮助你实现目标,但这是一个两步的过程.首先,您必须将增量运算符从(比如)i ++更改为i + = 1,然后XCode警告可帮助您修改循环.
归档时间: |
|
查看次数: |
30194 次 |
最近记录: |