PINCache를 사용하여 내 앱에 캐시를 추가하고 있으며 캐시 시스템에서 대리/데 코드 방식을 호출하는 상황에 처해 있습니다. 이러한 메서드는 일반적이지만 일반 값은 Codable
과 명시 적으로 일치하지 않습니다. 그들은 위임자이므로 일반 형식을 Codable
과 일치하도록 서명을 변경할 수 없습니다.Swift 4 Codable & generics
In argument type
T.Type
,T
does not conform to expected typeDecodable
가 어떻게 내 decoder
이 일반 값을 허용하도록 강제 할 수
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)
}
}
, 나는 다음과 같은 오류가 있어요?
당신이 기능을'호출하는 코드를 추가 시겠어요 사용하려고 만들 modelForKey'도 마찬가지입니까? 감사합니다;) –