如何在Swift中实现自定义类型转换?
似乎as
是一个可以在类上有自定义实现的运算符,但我找不到任何文档。
用例示例:人们可能希望从Swift String
类型转换为自定义类,如UCS4String
,它实现自己的方法和内部表示。
如果as
不能用于此目的,那么首选模式是什么?
答案 0 :(得分:3)
你只能将某些东西投射到它可能实际存在的东西上。例如,您可以将类强制转换为子类。 (例如,如果视图是UIImageView但你对它的引用最初是作为UIView引用,你可以使用as!
运算符将其转换为UIImageView。)但是String不是类,所以它不能以这种方式贬低。
同样,您不能在数字类型之间进行转换:例如,您不能将Int转换为UInt,反之亦然。
相反,您需要为您的类型提供初始值设定项,以便您可以根据旧实例强制强制到您的类型的实例。这就是你从Int获得UInt的方式:
let i2 = UInt(i)
在你的情况下如此:
let s2 = UCS4String(string:s)