【问题标题】:How to downcast from AnyObject to UInt16?如何从 AnyObject 向下转换为 UInt16?
【发布时间】:2014-06-06 09:01:40
【问题描述】:

我正在尝试将一些值传递给一个接受 UInt16 值作为参数的函数。

我通过 Parse 查询数据库来接收值。该查询返回一个 AnyObject 类型的对象(我知道它是一个整数)!为了将它传递给函数,我必须将它转换为 UInt16。不过 Swift 好像不喜欢这样,说 UInt16 不符合 AnyObject 协议。

我可以向下转换类型 AnyObject!成功转换为 Int,但我无法将该 Int 转换为 UInt16。

有人知道怎么解决吗?

【问题讨论】:

    标签: swift


    【解决方案1】:

    您可以使用as 类型转换运算符从AnyObject 转换为Int,但要向下转换为不同的数字类型,您需要使用目标类型的初始化程序,即:

    var o: AnyObject = 1
    var n: Int = o as Int
    var u: UInt8 = UInt8(n)
    

    【讨论】:

    • 在 Swift 中,您通过使用要转换为的数据类型的初始化程序来“转换”,即 NewType(foo)
    【解决方案2】:

    您需要做的就是添加一个 !在转换期间之后。

    例如,

    var amount : Int = user["Amount"] as! Int
    

    希望对你有帮助……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多