【发布时间】:2015-12-09 04:30:00
【问题描述】:
如何在 Swift 中实现自定义类型转换?
似乎as 是一个可以对类进行自定义实现的运算符,但我找不到关于它的任何文档。
一个用例示例:可能希望从 Swift String 类型转换为自定义类,如 UCS4String,它实现了自己的方法和内部表示。
如果as 不能用于此目的,那么首选模式是什么?
【问题讨论】:
标签: swift types casting swift2
如何在 Swift 中实现自定义类型转换?
似乎as 是一个可以对类进行自定义实现的运算符,但我找不到关于它的任何文档。
一个用例示例:可能希望从 Swift String 类型转换为自定义类,如 UCS4String,它实现了自己的方法和内部表示。
如果as 不能用于此目的,那么首选模式是什么?
【问题讨论】:
标签: swift types casting swift2
您只能将某些东西投射到它可能实际存在的东西上。例如,您可以将一个类转换为子类。 (例如,如果视图是 UIImageView 但您对它的引用以 UIView 引用开始,您可以使用 as! 运算符将其转换为 UIImageView。)但 String 不是类,因此不能向下转换以这种方式。
同样,您不能在数字类型之间进行转换:例如,您不能将 Int 转换为 UInt,反之亦然。
相反,您需要为您的类型提供一个 initializer,以便您可以强制基于旧实例将您的类型实例化。这就是您从 Int 获得 UInt 的方式:
let i2 = UInt(i)
在你的情况下:
let s2 = UCS4String(string:s)
【讨论】: