Swift属性 - 避免在n类上多次声明?

时间:2015-12-21 11:11:56

标签: xcode swift properties protocols

我在Swift中定义了以下协议:

protocol Condition {

var column : RepositoryTableColumn! {get set}
var sourceTable : RepositoryTable! {get set}
var conditionalValue : String! {get set}
var preventsClear : Bool! {get set}

func getCondition() -> String
func accept(visitor : ConditionVisitor)

}

协议扩展(现在开始)8个类,这意味着每个类都需要声明:

class IsEqual : Condition {

var column : RepositoryTableColumn!
var sourceTable : RepositoryTable!
var conditionalValue : String!
var preventsClear : Bool!

}

我的问题是,如何避免在每个班级中都有这四个声明?我试图避免这种情况的原因是我不想复制代码,即在这种情况下声明。

对于构造函数,我已经创建了Condition类的扩展,但是这并不意味着属性,因为扩展不能保存它们。

任何建议?

1 个答案:

答案 0 :(得分:0)

如果您的属性可以计算而不是存储,则可以创建extension Condition,为采用您的协议的任何内容提供默认实现。遗憾的是,您无法将存储的属性添加到扩展中的类,因此如果简洁对您来说很重要,则可能必须重新构建模型。