Я использую Моя для сетевых вызовов в Swift.
В моем ViewController
я звоню в WebService и создаю модель из ответа.
import UIKit
import Moya
class LoginViewController: UIViewController {
let provider = MoyaProvider<Api>()
override func viewDidLoad() {
super.viewDidLoad()
generateAccessToken()
}
private func generateAccessToken() {
provider.request(.generateAccessToken(
mobile: phoneTextField.text!,
countryCode: "91",
name: "Saurabh",
otp: "9612")
) { result in
switch result {
case .success(let response):
let data = response.data
let user = try? JSONDecoder().decode(User.self, from: data)
if let authToken = user?.authToken {
AuthManager.setToken(token: authToken)
}
case .failure(let error):
print(error.response?.statusCode as Any)
}
}
}
Я хочу переместить вызов WebService в другой файл, скажем NetworkManager.swift
import Foundation
import Moya
struct NetworkManager {
public static let shared = NetworkManager()
private let provider = MoyaProvider<Api>()
func generateAccessToken(with mobile: String, countryCode: String, name: String, otp: String) {
// Get result and return to calling class
}
}
Но настоятельно рекомендуется не использовать Singleton Class.
Как мне вызвать мой WebService и вернуть ответ на LoginViewController
?