如果一个类没有超类,我如何符合协议?

时间:2015-12-18 14:29:50

标签: swift delegates swift2 protocols

我有一个控制器类(不是viewController),我想要符合协议。 此控制器类不是任何其他类的子类,因此它没有超类。

如果某个类没有超类,我如何符合协议?

这不起作用:

class xxxController , yyyDelegate

这不是我们想要的:

class xxxController : zzzSuperClasss, yyyDelegate

有人知道它在Swift 2.1中是如何工作的吗?

更新:

我忘记写了我曾尝试过:

class xxxController : yyyDelegate

当我这样做时,我得到了

  

类型xxxController不符合协议NSObjectProtocol

所以我猜yyyDelegate需要(在这种情况下)xxxController是NSObject的子类?

2 个答案:

答案 0 :(得分:4)

如果一个类有一个超类,那么必须首先在基类中列出超类。当类没有超类时,从第一项开始列出协议。

换句话说,如果没有def demand_supply_links DemandSupplyLink.where(supply_type: 'WO', supply_base_id: base_id, supply_lot_id: lot_id, supply_split_id: split_id) end ,那么你可以简单地写

zzzSuperClasss

Swift意识到class xxxController : yyyDelegate 是一种协议,并且符合您的期望。

Documentation提供了此类的示例:

yyyDelegate

答案 1 :(得分:1)

您可以通过直接声明一致性来实现:

protocol Foo { }
class Bar: Foo { }

..或通过扩展名(例如,如果您没有对类实现的控制,例如从某些库中获取它的情况):

protocol Foo { }
class Bar { }
extension Bar: Foo { }