SceneDelegate - Результат вызова 'flatMap' не используется - PullRequest
0 голосов
/ 20 марта 2020

Привет всем, с кем я работаю Firebase аутентификация , с помощью которой я разрешаю пользователю войти в систему со своей электронной почтой и ссылкой для подтверждения, которая отправляется на его электронную почту ...

Все работает, но с iOS 13 Я должен использовать SceneDelegate вместо AppDelegate и в забаве c scene method (_ scene: UIScene, continue userActivity: NSUserActivity) Я получаю предупреждение, которое предупреждает меня о том, что Я не вызываю результат вызова flatMap.

Может ли кто-нибудь помочь мне разрешить это предупреждение?

Результат вызова 'flatMap' не используется

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
     userActivity.webpageURL.flatMap(handlePasswordlessSignIn)
}

func handlePasswordlessSignIn(withURL: URL) -> Bool {
    let link = withURL.absoluteString

    if Auth.auth().isSignIn(withEmailLink: link) {

        guard let email = UserDefaults.standard.value(forKey: FirebaseUserAuthWithLink.email) as? String else {
            print("L'email utilizzata per accedere non esiste")
            return true
        }

        Auth.auth().signIn(withEmail: email, link: link) { (user, error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }

            guard let user = user else {
                print(" Authentication con Link Fallita")
                return
            }
            let uid = user.user.uid
            print("Autenticazione Riuscita")

            let data = [
                "email" : email
            ] as [String : Any]

            Firestore.firestore().collection("Users").document(uid).setData(data) { (error) in
                if let error = error {
                    print(error.localizedDescription)
                    return
                }
            }
        }
        return true
    }
    return false
}

Следуя инструкциям по реализации, все примеры очередей относятся к AppDelegate, вместо этого я попытался обновить код, работающий с SceneDelegate

1 Ответ

1 голос
/ 20 марта 2020

Вы можете переписать так:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    if let url = userActivity.webpageURL {
        handlePasswordlessSignIn(withURL:url)
    }
}

Но тогда вы все равно получите жалобу, потому что теперь вы игнорируете результат handlePasswordlessSignIn! Вы можете решить это, обозначив handlePasswordlessSignIn как @discardableResult:

@discardableResult
func handlePasswordlessSignIn( //...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...