2017-11-26 12 views
0

私の質問はかなりシンプルですか?列挙型でジェネリックを使うにはどうすればいいですか?Swift generic enumの使い方は?

私は、プロトコルを持っている:

protocol Request { 
    associatedType BackendModel = Codable 
} 

class FirstModel: Codable { } 

class FirstRequest: Request { 
    typealias BackendModel = Codable 
} 

は、今私は、要求コールの大成功/失敗と列挙型を作りたいです。成功は私のBackendModelを返します。私はこれのようなものを考えましたが、うまくいきません。

enum Response<T: Codable> { 
    case success(T) 
    case failure(Error) 
} 

し、私は、関数の完了

// This function is used in an extension of the Request protocol. 
func doCallWithCompletion(completion: ((Response<T: BackendModel>) -> Void)?) { 
    let model = FirstModel() 
    completion(.success(model)) 
} 

おかげでそれを使用します!

答えて

0

列挙型と閉鎖を宣言しながら、あなたは一般的なパラメータとして、具体的な形を与える必要があります。

extension Request { 

    func doCallWith(completion:(Response<FirstModel>) ->()) { 
     let model = FirstModel() 
     completion(.success(model)) 
    } 

} 
関連する問題