我正在使用PINCache向我的应用程序添加缓存,并且我处于委托编码/解码方法由缓存系统调用的情况。 这些方法是通用的,但通用值不明确符合Codable
。因为他们是委托人,所以我无法更改签名以使通用类型符合Codable
。Swift 4 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)
}
}
有了这个代码,我有以下错误:
In argument type
T.Type
,T
does not conform to expected typeDecodable
我怎么能强迫我decoder
接受通用的价值?
能否请您添加代码调用该函数'modelForKey'以及?谢谢;) –