제네릭 매개 변수로 enum을 사용하여 제네릭 함수를 만들려고합니다.제네릭 함수에서 enum 사용
func buildProvider<T>(service: T) -> RxMoyaProvider<T> {
let endpointClosure = { (target: T) -> Endpoint<T> in
let url = target.baseURL.appendingPathComponent(target.path).absoluteString
let endpoint = Endpoint<T>(URL: url, sampleResponseClosure: {.networkResponse(200, target.sampleData)}, method: target.method, parameters: target.parameters)
return endpoint
}
return RxMoyaProvider<T>(endpointClosure: endpointClosure)
}
내가 같이 호출 : 나는 다음과 같은 일반적인 기능을 가지고
self.userProvider = buildProvider(service: UserService)
당신이 userProvider의 선언을 참조 아래 :
var에 userProvider : RxMoyaProvider를?
그리고 아래
은 UserService의 예를 참조하십시오import Foundation
import Moya
enum UserService {
case login(qrKey: String, language: String, fcmToken: String)
}
extension UserService: TargetType {
var baseURL: URL {
let appConfig = AppConfig()
let hostname = try! appConfig.hostname()
return URL(string: hostname)!
}
var path: String {
switch self {
case .login(_,_,_):
return "/v1/login"
}
}
var method: Moya.Method {
switch self {
case .login(_,_,_):
return .post
}
}
var parameters: [String: Any]? {
switch self {
case .login(let qrKey, let language, let fcmToken):
let params = ["qr-key": qrKey, "language": language, "os": "ios", "fcm-token": fcmToken]
return params
}
}
var sampleData: Data {
switch self {
case .login(_, _, _):
return "".data(using: .utf8)!
}
}
var task: Task {
return .request
}
}
을 그리고 난 다음 오류 얻을 :
이Cannot convert value of type 'UserService.Type' to expected argument type 'UserService'
사람이 나를 도울 수 있습니까?
감사합니다.
정확히 어떤 문자열이이 오류가 발생합니까? –