我想创建一个类,它可以存储符合特定协议的对象。对象应该存储在类型化数组中。根据 Swift 文档协议,可以将其作为类型使用:
因为它是一种类型,所以可以在许多允许其他类型的地方使用协议,包括:
- 作为函数、方法或初始值设定项中的参数类型或返回类型
- 作为常量、变量或属性的类型
- 作为数组、字典或其他容器中项的类型
然而,下面的代码会产生编译器错误:
协议‘ Some Protocol’只能作为通用约束使用,因为它具有 Self 或相关的类型要求
你要怎么解决这个问题:
protocol SomeProtocol: Equatable {
func bla()
}
class SomeClass {
var protocols = [SomeProtocol]()
func addElement(element: SomeProtocol) {
self.protocols.append(element)
}
func removeElement(element: SomeProtocol) {
if let index = find(self.protocols, element) {
self.protocols.removeAtIndex(index)
}
}
}