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

时间:2015-01-15 17:15:43

标签: swift int int32 uint16

我真的被困住了!我不是ObjC的专家,现在我正在尝试使用Swift。我认为这会简单得多,但事实并非如此。我记得Craig说他们称Swift为“Objective-C without 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的正确方法是什么?

4 个答案:

答案 0 :(得分:21)

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

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 :(得分:1)

这不是这种类型的施法在Swift中的工作原理。相反,使用:

let a : Int16 = 1
let b : Int = Int(a)

因此,您基本上在另一个变量的基础上实例化一个变量。

答案 2 :(得分:0)

在我的情况下,“我正在尝试将核心数据Int16转换为Int”,显式强制转换不起作用。我是这样的

let quantity_string:String = String(format:"%d",yourInt16value)
let quantity:Int = Int(quantity_string)

答案 3 :(得分:-1)

要将NSInteger转换为Int,请尝试此操作.. Int(NSInteger!)