J'ajoute du cache à mon application avec PINCache et je suis dans une situation où les méthodes déléguées pour encoder/décoder sont appelées par le système de cache. Ces méthodes sont génériques mais la valeur générique n'est pas conforme explicitement à Codable
. Parce qu'ils sont des délégués, je ne peux pas modifier la signature pour rendre le type générique conforme à Codable
.Swift 4 Codable & génériques
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)
}
}
Avec ce code, je vais avoir l'erreur suivante:
In argument type
T.Type
,T
does not conform to expected typeDecodable
Comment puis-je forcer mon decoder
à accepter la valeur générique?
Pourriez-vous s'il vous plaît ajouter le code appelant la fonction 'modelForKey 'aussi bien? Merci;) –