Контролер за изскачащ изглед след влизане в Realm Mobile Platform

Използвам Realm Mobile Platform с моето приложение Realm за iOS и се опитвам да отворя контролера за преглед, след като потребител влезе. Това е кодът, който имам сега:

let usernameCredentials = SyncCredentials.usernamePassword(username: emailField.text!, password: passwordField.text!, register: false)
let serverURL = URL(string: "http://45.55.220.254:9080")
SyncUser.logIn(with: usernameCredentials, server: serverURL!){ user, error in
    if user != nil{
        print("signed in")
        MyRealm.copyToSyncedRealm()                
        self.navigationController?.popToRootViewController(animated: true)
    }else if let error = error{
        self.loginButton.setTitle("Log in", for: .normal)
        let alert = UIAlertController(title: "Error", message: String(describing: error), preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: { void in

        }))
        self.present(alert, animated: true)
   }
 } 

Въпреки това, когато вляза, контролерът за изглед не изскача и когато щракна върху бутона за връщане назад върху елемента за навигация, приложението замръзва. Някаква идея защо това може да се случва?


person Eli Yazdi    schedule 08.08.2017    source източник


Отговори (1)


Обратното извикване, предадено на SyncUser.logIn(with:server:), се извиква на фонова опашка. Тъй като е безопасно да извиквате UIKit само от основната нишка, ще трябва да изпратите работата си към основната нишка.

SyncUser.logIn(with: usernameCredentials, server: serverURL!) { user, error in
    DispatchQueue.main.async {
        if user != nil {
            // Success…
        } else if let error = error {
            // Error…
       }
    }
 } 
person bdash    schedule 08.08.2017