2014-09-05 35 views
2

我是Swift初學者,我有一個問題。'導入UIKit'導致消失了Double-to-Int的轉換錯誤。爲什麼?

我在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 UIKitvar x:Int = (1.234 as Int)之前,
所以代碼進行以下操作:

import UIKit 

var x:Int = (1.234 as Int) 

然後,上述錯誤消息消失。但我不明白
,加入import UIKit引起消失
錯誤消息聲稱
'Double' is not convertible to 'Int'
上面說的原因。

請教我這個理由或一些參考文獻 瞭解它。

問候。

+4

爲什麼使用Xcode 6 beta 3?你應該使用測試版7. – 2014-09-05 02:34:18

+0

這也是發生在測試版7.我認爲它與橋接與NSNumber – 2014-09-05 02:37:37

+0

Thanx。無論如何,我會盡快更新我的Xcode。 – ykt68 2014-09-05 02:55:51

回答

1

編譯器將總是尋求一種方法,儘可能地編譯代碼。隨着import UIKit,你的代碼是

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

東西相當於已UIKit進口時,編譯器可以求助於NSNumber

+0

謝謝你的回答。我理解編譯時轉換NSNumber。 – ykt68 2014-09-05 04:25:18