Ios 如何设置Realm的默认SyncConfiguration,以便在多个ViewControllers中获得它,而无需冗余代码?

Ios 如何设置Realm的默认SyncConfiguration,以便在多个ViewControllers中获得它,而无需冗余代码?,ios,swift,configuration,realm,Ios,Swift,Configuration,Realm,根据报告: 我的方法是: AppDelegate.swift ViewController.swift 当我第一次打开应用程序时,什么也没发生,但当我第二次打开应用程序时,Realm工作正常 每当我打开应用程序时,打印的SyncConfiguration都是nil。没有错误 到处搜索,但找不到答案…问题是您正在使用异步方法来配置域,但您没有在方法的完成处理程序中调用print。异步调用完成后,您应该只显示ViewConcoller。是的,您是对的。我没有注意到,SyncUser.log

根据报告:

我的方法是:

AppDelegate.swift

ViewController.swift

当我第一次打开应用程序时,什么也没发生,但当我第二次打开应用程序时,Realm工作正常

每当我打开应用程序时,打印的
SyncConfiguration
都是
nil
。没有错误


到处搜索,但找不到答案…

问题是您正在使用异步方法来配置域,但您没有在方法的完成处理程序中调用print。异步调用完成后,您应该只显示ViewConcoller。

是的,您是对的。我没有注意到,
SyncUser.login
方法实际上是让用户登录。我认为这只是一种稍后使用的配置方法。无论如何,我必须用丑陋的方式来做,因为呈现的viewcontroller是我的第一个。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    DispatchQueue.main.async {
        let username = "test@test.com"
        let password = "Test123"
        let serverUrl = URL(string: "http://test.com:9080")
        let realmUrl = URL(string: "realm://test.com:9080/~/realmtest")

        if let user = SyncUser.current {
            Realm.Configuration.defaultConfiguration.syncConfiguration = SyncConfiguration(user: user, realmURL: realmUrl!)
        } else {
            SyncUser.logIn(with: .usernamePassword(username: username, password: password, register: false), server: serverUrl!, onCompletion: { (user, error) in
                guard let user = user else {
                    print("Error: \(String(describing: error?.localizedDescription))")
                    return
                }
                Realm.Configuration.defaultConfiguration.syncConfiguration = SyncConfiguration(user: user, realmURL: realmUrl!)
            })
        }
    }

    return true
}
override func viewDidLoad() {
    super.viewDidLoad()
    print("SyncConfiguration: \(String(describing: Realm.Configuration.defaultConfiguration.syncConfiguration))")
    self.realm = try! Realm()
}