Swift 3, Xcode 8, RealmSwift 2.0.2, сервер объектов Realm 1.0
В моем делегате приложения у меня есть функция, которая настраивает мою конфигурацию Realm для подключения к удаленному серверу синхронизации, который я настроил. Я просто использую тестовую учетную запись для аутентификации, пока не начну работать с основами синхронизации. 1.1.1.1
не мой настоящий IP-адрес. ;)
let username = "test"
let password = "test"
let address = "http://1.1.1.1:9080"
let syncAddress = "realm://1.1.1.1:9080/~/myapp"
SyncUser.authenticate(with: Credential.usernamePassword(username: username, password: password, actions: []), server: URL(string: address)!, onCompletion: { user, error in
guard let user = user else {
fatalError(String(describing: error))
}
// Open Realm
Realm.Configuration.defaultConfiguration = Realm.Configuration(
syncConfiguration: (user, URL(string: syncAddress)!)
)
})
Кажется, это работает нормально. Я вижу, что данные появляются на моем сервере, и я не получаю никаких ошибок. Я предполагаю, что установка здесь конфигурации Realm означает, что все экземпляры Realm()
будут использовать эту конфигурацию.
Затем я установил объект realm
в качестве свойства класса в двух отдельных контроллерах представления:
class TableViewControllerA: UITableViewController{
let realm = try! Realm()
override func viewDidLoad() {
// CORRECT: Prints "nil" as it should for a remotely synced Realm instance
print(realm.configuration.fileURL)
}
}
...и еще один в другом файле:
class ViewControllerB: UIViewController{
let realm = try! Realm()
override func viewDidLoad() {
// WRONG: Prints the path to the local realm file in the Simulator
print(realm.configuration.fileURL)
}
}
Как отмечено в комментариях к коду выше, два экземпляра realm
различны. На некоторых моих контроллерах представления я могу сохранять объекты на сервер и видеть, как они появляются на моем устройстве. На других контроллерах представления я не вижу никаких данных, потому что они используют неправильную базу данных Realm.
Могу ли я не ожидать надежного сохранения конфигурации Realm в моем приложении? Нужно ли мне делать что-то еще, чтобы использовать ту же конфигурацию?
user
для установки конфигурации. - person Clifton Labrum   schedule 08.10.2016