二元运算符'..<'不能应用于两个'Int'操作数[Swift]

时间:2016-06-02 21:14:24

标签: swift cgfloat

我在Xcode项目中进行编程,然后我突然发出警告:

 for var i:CGFloat = 0; i<3; i++ 

“将在Swift 3中删除。”它给了我一个选项,可以将代码“修复”为Swift 3语法并将其切换为:

for i:CGFloat in 0 ..< 3 {

现在我的代码不会运行,而且它会得到错误“二元运算符”。&lt;'不能应用于两个“Int”操作数。

2 个答案:

答案 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更改为iCGFloat