我正在使用 PINCache 向我的应用程序添加缓存,并且我处于缓存系统调用编码/解码的委托方法的情况。这些方法是通用的,但通用值不明确符合Codable
. 因为他们是代表,所以我不能更改签名以使泛型类型符合Codable
.
func modelForKey<T : SimpleModel>(_ cacheKey: String?, context: Any?, completion: @escaping (T?, NSError?) -> ()) {
guard let cacheKey = cacheKey, let data = cache.object(forKey: cacheKey) as? Data, T.self is Codable else {
completion(nil, nil)
return
}
let decoder = JSONDecoder()
do {
let model: T = try decoder.decode(T.self, from: data)
completion(model, nil)
} catch {
completion(nil, nil)
}
}
使用此代码,我遇到以下错误:
在参数类型中
T.Type
,T
不符合预期类型Decodable
如何强制我decoder
接受通用值?