2015-10-26 94 views
10

我有两个协议(ArchivableSerializable)和一个类(Model)多次子类化。许多子类实现了ArchivableSerializable(或两者)。我想为Model的所有子项定义一个函数,它们实现ArchivableSerializable。这两项工作:Swift中的协议扩展凡对象是一个类,并符合协议

extension Serializable where Self: Model { 
    func fetch() { ... } 
} 

extension Serializable where Self: Archivable { 
    func fetch() { ... } 
} 

但我无法弄清楚如何扩展在既要求协议。除了创建符合前两个协议的第三个协议之外,还有其他选择吗?

回答

23

我认为这应该工作:

extension Archivable where Self: Model, Self: Serializable { 

    func fetch() { ... } 

} 

...或周围的其他方法:

extension Serializable where Self: Model, Self: Archivable { 

    func fetch() { ... } 

} 
+0

谢谢你 - 这正是我需要的。一旦系统允许我将标记为答案。 –

+0

这是一个很棒的提示! – Fattie