Допустим, у меня есть API входа и ответ для успешного входа в систему и сбой входа отличается
Я хочу сделать этот общий способ
У меня точно есть метод, который API вызова и я передаю T: кодируемый для кодирования ответа
typealias completionResponse<T:Codable> = ((_ success:T?,_ error:Error?) -> Void)
static func login<T:Codable>(userName:String,password:String,completion:@escaping completionResponse<T>) {
self.performRequest(request: APIRouterUserModule.login(email: userName, password: password)) {(model) in
self.handleResponseCallCompletion(result: model, completion: completion)
}
}
Теперь я создал следующее для решения этой проблемы.
struct FailableResponse <T:Codable,E:Codable> : Codable {
var success:T?
var failure:E?
public init(from decoder:Decoder) throws {
let singleValue = try decoder.singleValueContainer()
success = try singleValue.decode(T.self)
failure = try singleValue.decode(E.self)
}
}
Проблема:
проблема в том,Предположим, что вход успешен, поэтому в этом случае я хотел, чтобы failure
было равно нулю.
и наоборот для сбоя входа в систему. Я хотел success
должен ноль.
Но что происходит, ни один из них не равен nil и success
и failure
не ноль. Однако значения опций внутри являются ноль
Так есть ли обходной путь для этого?
Заранее благодарим за ваши усилия :) 1029 *