Swinject を使用して依存関係を注入しようとしていますが、何が間違っているのかわかりません。
登録ユーザーを処理するプロトコルがあります。
protocol AuthServiceProtocol {
func registerUser(email: String, password: String, completion: @escaping CompletionHandler) }
このプロトコルに準拠するクラスは、すべてのロジックを作成します。
class AuthService: AuthServiceProtocol {
func registerUser(email: String, password: String, completion: @escaping CompletionHandler) {
let lowerCaseMail = email.lowercased()
let body: [String: Any] = [
"email": lowerCaseMail,
"password" : password
]
Alamofire.request(URL_REGISTER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: HEADER).responseString { (response) in
if response.result.error == nil {
completion(true)
} else {
completion(false)
debugPrint(response.result.error as Any)
}
}
}
}
そのため、AppDelegate でコンテナーを登録すると、次のようになります。
let container = Container() { container in
container.register(AuthServiceProtocol.self) { _ in AuthService() }.inObjectScope(.container)
container.register(CreateAccountVC.self) { r in
let controller = CreateAccountVC()
controller.authService = r.resolve(AuthServiceProtocol.self)
return controller
}
}
ただし、CreateAccountVC authService では空です。どうすればそれを行うことができますか?CreateAccountVC は ViewController のサブクラスです。プロパティとコンストラクターで試してみましたが、常に nil です。