【问题标题】:conform to generic type D whic is a protocol [duplicate]符合泛型 D 类型,它是一个协议 [重复]
【发布时间】:2019-01-14 08:41:18
【问题描述】:

我有一个基本视图控制器,所有视图控制器都将从它继承,我想符合通用类型 D,这是一个协议,但我得到了

从非协议、非类类型'D'继承

&

'type' 不是 'D' 的成员类型

这是我的代码

open class BaseViewController <T, D> :
                                UIViewController,
                                D,
                                ViewControllerCommonFeatures
                                where T : BasePresenter<D>, D.type == Protocol {
}

Base Presenter 是一个普通的 swift 类,D 将是一个符合其他 swift 协议的 swift 协议。

我至少想将 D 类型定义为协议。

提前谢谢..

【问题讨论】:

  • 你想达到什么目的?您的类不能从泛型继承(或符合泛型协议),这不是 if 的工作方式。类基类和它遵循的协议必须在编译时知道。你到底想做什么?
  • @mag_zbc 我想传递一个符合它的协议 D(我想在 括号之间使用它并同时符合它)
  • 我没有投反对票。我只是将其标记为可能的重复。
  • @RakeshaShastri 好的,谢谢
  • 我可以看到what你想做什么,我在问为了什么目的?,因为你在做什么是不可能的,期间。

标签: ios generics swift3 swift4


【解决方案1】:

根据这个link,我试图做的似乎在 Swift 中是不可行的,因为 swift 禁止扩展或符合通用类型。 在编译代码之前必须指定一个已知类型。

【讨论】:

  • 没有必要重复现有问题的答案。更友好的策略可能是通过删除您的问题来减少带宽。
  • 如果有人试图实现我想要做的事情,你不认为这对他有用且直接! + 这有点不完全一样。
猜你喜欢
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多