2015-12-21 51 views
0

我在夫特定义了以下协议:Swift属性 - 避免对n类进行多重声明?

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类的扩展,但这不能暗示属性,因为扩展不能容纳它们。

任何建议?

回答

0

如果你的属性可以被计算而不是存储,你可以创建一个extensionCondition,它为采用你的协议的任何东西提供默认实现。不幸的是,您无法将存储的属性添加到扩展中的类中,因此如果简短对您来说很重要,您可能必须重新构建模型。