自定义类型转换

时间:2015-12-09 04:30:00

标签: swift types casting swift2

如何在Swift中实现自定义类型转换?

似乎as是一个可以在类上有自定义实现的运算符,但我找不到任何文档。

用例示例:人们可能希望从Swift String类型转换为自定义类,如UCS4String,它实现自己的方法和内部表示。

如果as不能用于此目的,那么首选模式是什么?

1 个答案:

答案 0 :(得分:3)

你只能将某些东西投射到它可能实际存在的东西上。例如,您可以将类强制转换为子类。 (例如,如果视图是UIImageView但你对它的引用最初是作为UIView引用,你可以使用as!运算符将其转换为UIImageView。)但是String不是类,所以它不能以这种方式贬低。

同样,您不能在数字类型之间进行转换:例如,您不能将Int转换为UInt,反之亦然。

相反,您需要为您的类型提供初始值设定项,以便您可以根据旧实例强制强制到您的类型的实例。这就是你从Int获得UInt的方式:

let i2 = UInt(i)

在你的情况下如此:

let s2 = UCS4String(string:s)