Swift:将Int16转换为Int32(或NSInteger)

10

我真的陷入困境了!我不是ObjC的专家,现在我正在尝试使用Swift。我以为它会更简单,但事实并非如此。我记得Craig说他们把Swift称为“没有C的Objective-C”,但OS X系统中的Foundation库中有太多的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 s = array1[Int(event.keyCode.value)] - Jack
3个回答

27

要将一个数字从一种类型转换为另一种类型,你需要创建一个新的实例,并将源值作为参数传递 - 例如:

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 中此类型的转换方式。相反,请使用以下方式:
let a : Int16 = 1
let b : Int = Int(a)

所以,您基本上是根据另一个变量实例化一个变量。

0
在我的情况下,“我试图将核心数据Int16转换为Int”,显式转换没有起作用。我是这样做的。
let quantity_string:String = String(format:"%d",yourInt16value)
let quantity:Int = Int(quantity_string)

我不知道为什么直接转换不起作用:“let int: Int = Int(int16)” - Rahul K Rajan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接