나는이 struct
같은를
struct ApiResponse<T: Codable>: Codable {
let result: T?
let statusCode: String?
}
내 코드 어딘가에 statusCode
. 나는 관심이 result
없지만 Swift는 다음을 사용하도록 허용하지 않습니다.
let apiResponse = value as? ApiResponse
다음 오류가 표시됩니다.
일반 매개 변수 'T'를 'ApiResponse'로 캐스트 할 때 유추 할 수 없습니다.
구조체 정의가 일부 구조체를 준수하도록 요청하기 때문에 매우 분명 Codable
하지만 동시에 다른 유형에 대해 실패하므로 한 유형을 사용할 수 없습니다.
예 :
let apiResponse = value as? ApiResponse<ApiResult>
한 가지 유형의 응답에 대해서는 사실이지만 내가 있다면 ApiResponse<ApiOtherResult>
실패 할 것입니다.
NetworkLayer.requestObject(router: router) { (result: NetworkResult<T>) in
switch result {
case .success(let value):
if let apiResponse = value as? ApiResponse {
}
case .failure: break
}
}
새로운 프로토콜을 추가하는 것이 좋습니다.
protocol StatusCodeProvider {
var statusCode: String? { get }
}
있는지 확인하기 함수의 요구로 추가 T
에 NetworkResult<T>
따를 것 StatusCodeProvider
모든 및 추가 적합성 T
당신이 요청합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다