首页 > 解决方案 > 类协议扩展仅限于有限数量的类

问题描述

我有两个 UIViewControllers A 和 B,我想要一个实现 UITableViewDataSource 的扩展,它应该限制在两个 A 和 B 控制器以上。可能吗?

我收到以下代码的编译器错误消息:

错误消息:用于扩展非泛型类型“UIViewController”的尾随“where”子句

class A: UIViewController {}
class B: UIViewController {}
extension UIViewController: UITableViewDataSource where Self: A, Self: B { }

标签: iosswift

解决方案


它不像这样工作,您必须创建一个协议并将其应用于您的类

protocol YourProtocol { } 

extension YourProtocol where Self: UIViewController {
 
}
extension A: YourProtocol {} 
extension B: YourProtocol {}

在协议中,您可以编写所有代码,或者简单地代替协议,您可以创建一个类并将其子类化


推荐阅读