'导入UIKit'导致消失Double-to-Int的强制转换错误。为什么?

时间:2014-09-05 02:32:27

标签: swift swift-playground

我是Swift的初学者,我有一个问题。

我在Xcode6-Beta3中创建了一个新的游乐场文件并删除了
所有默认的片段自动生成。 我只写了一行,

var x:Int = (1.234 as Int)

然后,这一行导致编译错误,并显示消息

Playground execution failed: 
error: <EXPR>:1:20: error: 
'Double' is not convertible to 
'Int'
var x:Int = (1.234 as Int)
               ^
控制台输出中的

。 我可以理解这个错误,因为1.234不能被转换为Int。

接下来,我在import UIKit之前又添加了一行var x:Int = (1.234 as Int)
所以代码如下:

import UIKit

var x:Int = (1.234 as Int)

然后,上面的错误消息消失了。但我无法理解 添加import UIKit导致消失的原因
声称是的错误信息 'Double' is not convertible to 'Int'
上方。

请教我这个理由或一些参考资料 了解它。

问候。

1 个答案:

答案 0 :(得分:1)

编译器将始终寻求一种尽可能使代码编译的方法。使用import UIKit,您的代码等同于

var _x = 1.234 as NSNumber
var x:Int = (_x as Int)

导入NSNumber时,编译器可以转为UIKit