【发布时间】:2015-01-05 05:19:36
【问题描述】:
我有以下课程:
class BaseCache<T: Equatable>: NSObject {
var allEntities = [T]()
// MARK: - Append
func appendEntities(newEntities: [T]) {
....
}
}
现在我想对它进行子类化,但我收到烦人的错误,我的类型“不符合协议'Equatable'”:
似乎 Swift 中的泛型确实让人头疼。
【问题讨论】:
-
在类定义中添加协议可能更容易。
class Aftership : Equatable { } -
这是不可能的,因为 Aftership SDK 是用 Objective C 编写的
-
也许将 == 函数放在扩展中,这样它实际上符合协议。
-
== func 必须是全局的,所以它必须在扩展定义之外。实际上,
AftershipTracking符合Equatable协议,否则我会在扩展行上收到编译器警告。 -
看起来你必须完全跳过泛型。我真的很讨厌 swift 泛型的一些限制。
标签: ios generics inheritance swift