У меня есть структура сетевого менеджера.Я пытаюсь инициализировать его в моем главном UIViewController
, но это не удается.
struct NetworkManager {
static var enviroment: NetworkEnviroment = .production
static var apiKey = ""
private let mainApiRouter = Router<MainApi>()
func login(username: String, pass: String, completion:@escaping(_ product:User?, _ err: String?) ->()){
mainApiRouter.request(.login(username: username, password: pass)) { (data, resp, err) in
if err != nil {
completion(nil, "Please check your network connection")
} else {
if let reponse = resp as? HTTPURLResponse {
let result = handelNetworkResponse(reponse)
switch result {
case .success:
guard let responseData = data else {
completion(nil, NetworkResponse.noData.rawValue)
return
}
do {
let apiResponse = try JSONDecoder().decode(UserData.self, from: responseData)
if apiResponse.data != nil {
completion(apiResponse.data, nil)
} else {
completion(nil, "User login failed")
}
}catch(let error) {
completion(nil, "\(error.localizedDescription)")
}
case .failure(let failureError):
completion(nil, failureError)
}
}
}
}
}
}
Тогда я инициализирую его в контроллере представления, чтобы иметь возможность использовать функцию входа в системув структуре сетевого менеджера.И когда я вызываю кодировщик super.init
, сетевой менеджер равен нулю.
class LoginViewController: UIViewController {
var networkManager: NetworkManager!
init(networkManager: NetworkManager) {
super.init(nibName: nil, bundle: nil)
self.networkManager = networkManager
}
required init?(coder aDecoder: NSCoder) {
// super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}