使用实例方法扩展类

时间:2016-06-22 03:57:22

标签: swift

我正在尝试扩展Swift中现有类型的功能。我想使用点语法来调用类型上的方法。

我想说:

existingType.example.someMethod()
existingType.example.anotherMethod()

我目前正在使用这样的扩展程序:

extension ExistingType {
    func someMethod() {
    }
    func anotherMethod() {
    }
}

existingType.someMethod()
existingType.anotherMethod()

这样做会暴露太多功能。所以,我想在类中编写这些方法,只需扩展ExistingType即可使用该类的实例。我不确定正确的方法。

如果我实际实现现有类型,我会执行以下操作:

struct ExistingType {

    var example = Example()
}

struct Example {
    func someMethod() {
    }

    func anotherMethod() {
    }
}

允许我通过以下方式调用方法:

let existingType = ExistingType()
existingType.example.someMethod()

问题是我没有实现该类型,因为它已经存在。我只需要扩展它。

2 个答案:

答案 0 :(得分:1)

看起来您正在尝试添加另一个属性example现有的类ExistingType并调用该属性的方法。但是,您无法在扩展中添加属性。将另一个属性添加到现有类的唯一方法是将其子类化。

答案 1 :(得分:0)

您可以创建新的struct

struct NewType {
    let existingType: ExistingType

    func someMethod() {
    }

    func anotherMethod() {
    }
}