好的,我已经让这个协议在Realm的帮助下覆盖了对象缓存。在协议中,我定义cache: Object?
哪个类型由Realm库定义。
protocol PersistantCaching {
var cache: Object? { get set }
}
然后我在课程ClientDetails
中使用此协议。
class Client: PersistantCaching {
var cache: Object?
}
但是Object
过于笼统。所以在我的例子中,我创建了Object
子类
class LocalClient: Object {
dynamic var name = ""
}
现在,如果我将课程Client
更改为支持LocalClient
,就像这样
class Client: PersistantCaching {
var cache: LocalClient?
}
我收到错误,类型'客户'不符合协议'PersistantCaching'
如何编写定义变量的通用协议,该变量也接受指定Type的子类?
答案 0 :(得分:2)
使用associatedtype
:
protocol PersistantCaching {
associatedtype CacheObject: Object
var cache: CacheObject? { get set }
}
(我假设您希望cache
始终是Object
的子类。)