【发布时间】:2015-03-21 04:48:30
【问题描述】:
想象一下,这段 Swift 代码在 Xcode 6.1.1 中生成了一个错误,这让我感到惊讶:
public func unlockNextLevel() -> Int
{
var highest : Int = 123
return (highest < highestUnlockedLevel)
}
更准确地说,它告诉我在返回行中:
'Int' 不能转换为 'String'
所以,由于我之前遇到过一些奇怪的转换错误,我想我会尝试将这两种类型都转换为 Int 并看看我得到了什么:
public func unlockNextLevel() -> Int
{
var highest : Int = 123
return (Int(highest) < Int(highestUnlockedLevel))
}
然后我在返回行收到以下错误:
找不到接受所提供参数的“
但是当我将其分解为常量值时:
return (Int(3) < Int(12))
我再次收到 int not convertible to string 错误。
'Int' 不能转换为 'String'
Gnnnnn.... 哦,好吧,所以我再试一次,不带括号:
return highest < highestUnlockedLevel
这又给了我另一个错误消息:
不能使用类型为“(@lvalue Int, @lvalue Int)”的参数列表调用“
好的,我明白了,斯威夫特,我很笨。或者也许......嗯,拿着这个,斯威夫特:
var result = highest < highestUnlockedLevel
return result
Arrrr ...不。 Swift 决定现在返回行构成另一个错误:
'Bool' 不能转换为 'Int'
(...拨打心理评估号码...)
所以...有人可以向我解释一下吗:
- 如何解决或解决此问题?
- 当然还有:为什么?哦,为什么???
注意:这是在混合的 Objc/Swift 项目中,如果这有什么不同的话。 highestUnlockedLevel 变量在带有自定义 setter 和 getter 的 Swift 类中声明。
【问题讨论】:
-
'Bool' is not convertible to 'Int'实际上清楚地描述了问题:) -
该死的......我是盲人:D
标签: swift compiler-errors type-conversion