我正在使用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'以及?謝謝;) –