2

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 です。

4

1 に答える 1