【问题标题】:Swift: Convert Int16 to Int32 (or NSInteger)Swift:将 Int16 转换为 Int32(或 NSInteger)
【发布时间】:2015-03-14 04:24:28
【问题描述】:

我真的被困住了!我不是 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 s = array1[Int(event.keyCode.value)]

标签: swift int int32 uint16


【解决方案1】:

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

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)

【讨论】:

    【解决方案2】:

    这不是这种类型的转换在 Swift 中的工作方式。相反,使用:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我不知道为什么直接转换不起作用 "let int: Int = Int(int16)"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多