2015-01-15 161 views
4

我真的被卡住了!我不是ObjC的專家,現在我正在嘗試使用Swift。我認爲這會更簡單,但事實並非如此。我記得Craig說他們稱Swift爲「沒有C的Objective-C」,但是在OS X的基礎上有太多的C類型。文檔說很多ObjC類型會自動轉換爲Swift類型。我很好奇:C類型怎麼樣?Swift:將Int16轉換爲Int32(或NSInteger)

這裏就是我堅持:

//array1:[String?], event.KeyCode.value:Int16 
let s = array1[event.keyCode.value]; //return Int16 is not convertible to Int 

我試着在ObjC一些事情:

let index = (Int) event.keyCode.value; //Error 

let index = (Int32) event.keyCode.value; //Error again, Swift seems doesn't support this syntax 

什麼是轉換的Int16爲Int的正確方法?

+0

試試'let s = array1 [int(event.keyCode.value)]' – Jack 2015-01-15 17:20:01

回答

16

從一種類型轉換一批到另一個,你必須創建一個新的實例,傳遞源值作爲參數 - 比如:

let int16: Int16 = 20 
let int: Int = Int(int16) 
let int32: Int32 = Int32(int16) 

我用明確的類型變量聲明,使概念明確的 - 但在所有上述案件的類型可以推斷:

let int16: Int16 = 20 
let int = Int(int16) 
let int32 = Int32(int16) 
1

這不是這種類型的鑄件在Swift中的工作方式。相反,使用:

所以,你基本上實例化一個基於另一個變量。

-1

要NSInteger的轉換爲INT,試試這個.. Int(NSInteger!)