是否可以从String继承自定义类?

时间:2019-02-21 22:34:27

标签: swift oop

我想将自定义类用作字符串。在Swift中有可能吗?例如,我想做这样的事情:

label.text = CustomClass()

1 个答案:

答案 0 :(得分:1)

在Swift中无法从String继承。它是struct,并且不支持继承。

您所展示的用例的一种可能性是扩展UILabel *来包装和取消包装您的类型,因为它可以将本身与字符串进行转换。换句话说,如果您的班级具备以下能力:

class CustomClass {
    var stringValue: String {
        // Create a string somehow
    }

    init(stringValue: String) {
        // Configure
    }
}

然后UILabel(或其他任何内容)上的帮助器属性可以为客户端隐藏这些操作:

extension UILabel {
    var myText: CustomClass? {
        get { return self.text.flatMap(CustomClass.init(stringValue:) }
        set { self.text = newValue?.stringValue }
    }
}

以便您可以写label.myText = instanceOfCustomClass

如果有必要-即,您发现自己需要针对几种类型进行此操作-甚至可以将“转换为字符串/从字符串转换”为协议,而不是依赖于特定的具体类型。


*我在这里使用iOS;相同的原理适用于具有var text: String? { get set }任何事物。