我在Xcode项目中进行编程,然后我突然发出警告:
for var i:CGFloat = 0; i<3; i++
“将在Swift 3中删除。”它给了我一个选项,可以将代码“修复”为Swift 3语法并将其切换为:
for i:CGFloat in 0 ..< 3 {
现在我的代码不会运行,而且它会得到错误“二元运算符”。&lt;'不能应用于两个“Int
”操作数。
答案 0 :(得分:6)
for i in 0..<3 {
let someFloat = CGFloat(i) // if you need a CGFloat
}
检查间距,从循环声明中删除CGFloat
类型。
答案 1 :(得分:2)
正如@JAL所说,我不认为你可以用for
运行CGFloat
循环,但你也有几个选项。
您可以使用range
运算符,如下所示:
// i is used an int
for i in 0..<3 {
let convertedI = CGFloat(i) // This converts i to a new value as a CGFloat
}
你也可以在 Swift 2 中使用stride
并投射为CGFloat
:
// i is now a CGFloat
for i in (0 as CGFloat).stride(to: 3, by: 1) {
// No need to convert because i is now a CGFloat
}
最后, Swift 3 中的stride
:
// i is an int in this scenario
for i in stride(from: 0, to: 3, by: 1) {
let convertedI = CGFloat(i) // This converts i to a new value as a CGFloat
}
<强>更新强>
由于@Hamish,将我的Swift 2 stride
更改为i
以CGFloat
。