与Swift协议的父子关系

时间:2017-07-28 16:10:47

标签: swift swift3 protocols parent-child

我试图用Swift 3中的协议描述父子模型。

protocol CatalogFilter: class {

    var title: String { get }

    associatedtype FilterItem: CatalogFilterItem
    var items: [FilterItem] { get }

}

protocol CatalogFilterItem: class {

    associatedtype Filter: CatalogFilter
    var filter: Filter? { get }

    var title: String { get }

}

type may not reference itself as a requirement associatedtype FilterItem: CatalogFilterItem收到错误associatedtype FilterItem: CatalogFilterItemassociatedtype Filter: CatalogFilter收到同样的错误

也许有人知道如何处理这样的问题?

1 个答案:

答案 0 :(得分:0)

protocol CatalogFilter: class {

   var title: String { get }

   associatedtype CatalogFilterItem
   var items: [CatalogFilterItem] { get }

}

protocol CatalogFilterItem: class {

  associatedtype Filter: CatalogFilter

  var filter: Filter? { get }
  var title: String { get }

}

尝试以上操作,因为看起来对关联类型的递归约束的支持仍然不可用。

参考 - https://github.com/apple/swift-evolution/blob/master/proposals/0157-recursive-protocol-constraints.md