0
余分な鋳造をしないでレスポンスでテンプレートを達成する方法を誰かが知っていますか?今私がそうした場合、Xcodeは私に動的にTをオーバーライドできないというエラーを返します。しかし、私は本当に正しい方法で信じていますが、何かを見逃しました。いいえ?追加鋳造なしのスウィフトレスポンステンプレート
今、それがどのように見えるです:コンパイラは、あなたがこのケースで
func pseudoResponse() {
let time: TimeInterval = 3.0
let response : Response<TimeInterval> = .success(response: time)
didReciveResponse(request: .time, response: response)
}
をタイプに注釈を付けるために持っていて、中にResponse
タイプを指定する必要がジェネリック型を推論することはできませんのようfunc didReciveResponse(request: Request, response: Response<Any>)
enum Response<T> {
case success(response: T)
case failured(error: Error)
}
func pseudoResponse() {
let time: Timeinterval = 3
// somehow cast T (compiler shows error that I can't do this)
let response = .success<Timeinterval>(time)
didReciveResponse(.time, response)
}
// delegate method
func didReciveResponse(request: Request, response: Response) {
switch request {
case .time:
switch response {
// response without additional casting (as?)
case .success(let value): time = value
}
}
}