我真的被卡住了!我不是ObjC的专家,现在我正在尝试使用Swift。我以为会简单得多,但事实并非如此。我记得Craig曾说过他们将Swift称为“没有C的Objective-C”,但是OS X的基础中有太多的C类型。文件说,许多ObjC类型将自动(可能是双向)转换为Swift类型。我很好奇:C类型呢?
这是我被困的地方:
//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的正确方法是什么?
最佳答案
要将数字从一种类型转换为另一种类型,您必须创建一个新实例,并将源值作为参数传递-例如:
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)
关于Swift:将Int16转换为Int32(或NSInteger),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27969149/