【发布时间】:2016-10-19 03:12:38
【问题描述】:
我正在尝试在我的 ios 应用程序中使用 Realm Object Server。我将它托管在 AWS 上,我可以成功地对其进行读写。但是,我在启动我的应用程序后访问同步领域时遇到问题。在启动时,我有一个登录视图控制器(与示例应用程序中提供的非常相似)
身份验证成功后,我想访问同步的 Realm 来决定要呈现哪个视图控制器。
@IBAction func logIn(sender: AnyObject?) {
guard userInputValid() else {
return
}
self.activityIndicator.startAnimating()
self.logInButton.isHidden = true
SyncUser.authenticate(with: Credential.usernamePassword(username: userNameTextField.text!, password: passwordTextField.text!, actions: []), server: syncAuthURL!, onCompletion: { user, error in
guard let user = user else {
self.presentError(error: error as! NSError)
self.activityIndicator.stopAnimating()
self.logInButton.isHidden = false
return
}
Realm.Configuration.defaultConfiguration = Realm.Configuration(
syncConfiguration: (user, self.syncServerURL!),
objectTypes: [Dot.self, Mod.self]
)
let realm = try! Realm()
// realm.objects(Dot.self).count == 0 here even though there is a Dot object persisted in the server
// When I access the realm later in the app (e.g in a viewDidAppear of another controller) the object is there
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let vc = DotCollectionViewController(nibName: "DotCollectionViewController", bundle: nil)
let navVC = UINavigationController(rootViewController: vc)
appDelegate.window?.rootViewController = navVC
})
}
我已经验证了对同步领域的读写,并发现了一些奇怪的东西:即使我能够成功写入数据,领域似乎也有一个 null 的 fileURL。我正在使用let realm = try! Realm() 访问我应用程序其他部分中的领域,而当我使用print(realm.configuration.fileURL) 时,我总是得到零,即使对于有效的同步领域也是如此。
所以我的问题是,我是否必须等待一段时间才能访问同步的领域?如果是这样,我将如何去做?对此问题的任何帮助将不胜感激。
【问题讨论】: