如何在swift

时间:2016-06-06 15:54:42

标签: ios swift

我有2个类,它们具有相同数量的同名属性。我想访问没有类型转换的属性。

class A : NSObject {
    var amount : Int = 10
}

class B : NSObject {
    var amount : Int = 20
}

现在我想将amount属性的值加倍,如此

main() {
    let classA : A()
    print(doubleValue(classA))

    let classB : B()
    print(doubleValue(classB))
}

func doubleValue(myClass:AnyObject) -> Int {
    return myClass.amount * 2
}

请建议我如何实现这一目标。

1 个答案:

答案 0 :(得分:3)

这正是协议的用途。让我们调用此新协议Amountable并添加amount属性。

protocol Amountable {
    var amount: Int { get set }
}

如果您想为doubleValue()提供默认实现,您可以按如下方式使用协议扩展:

extension Amountable {
    mutating func doubleValue() {
        self.amount *= 2
    }
}

最后,让你的类符合协议:

class ClassA: Amountable {
    // Implementation of classA here
}

class ClassB: Amountable {
    // Implementation of classB here
}

objectA = ClassA()
objectA.doubleValue()