Обучение использованию Realm Mobile Platform.Realm default sync file
Я построил небольшое приложение для iOS, которое успешно сохраняет данные на сервере, и данные согласованы на разных устройствах. Приложение очень похоже на official realm tutorial.
Я могу открыть URL-адрес синхронизации из приложения Realm Browser Mac Application, и я вижу, что изменения происходят нормально в реальном времени. Это где я застрял: Я пытаюсь увидеть изменения в локальном файле царств, но
print(self.realm.configuration.fileURL)
возвращает нильполугруппы print(Realm.Configuration.defaultConfiguration.fileURL)
пустой файл
Это мой код:
SyncUser.logIn(with: cloudKitCredentials, server: serverURL) { user, error in
guard let user = user else {
fatalError(String(describing: error))
}
DispatchQueue.main.async {
// Open Realm
let configuration = Realm.Configuration(
syncConfiguration: SyncConfiguration(
user: user,
realmURL: URL(string: "realm://myIPaddress/~/realmtasks")!)
)
self.realm = try! Realm(configuration: configuration)
// Show initial tasks
func updateList() {
self.items = Array(self.realm.objects(Row.self))
self.tableView.reloadData()
}
updateList()
print(self.realm.configuration.fileURL)
//returns nil
print(Realm.Configuration.defaultConfiguration.fileURL)
// I can open the file, but it's empty
// Notify us when Realm changes
self.notificationToken = self.realm.addNotificationBlock { _ in
updateList()
}
}
Причина, по которой я тестирую это, заключается в том, что я могу загрузить данные из файла, а не из сервера. Так что: (a) логин будет вызываться только один раз (b) данные доступны, когда пользователь находится в автономном режиме.
Можете ли вы представить подробную информацию о аварии? т.е. как воспроизвести его и т. д.? Очевидно, что синхронизация не может произойти, когда устройство отключено, однако у вас все еще есть доступ к данным, которые были синхронизированы * до того, как * был отключен. При выполнении начальной аутентификации пользователя приложение должно быть подключено к сети. – teotwaki
@teotwaki Я, кажется, неправильно сформулировал свой вопрос. Простите за это. Перефразировать: у меня создалось впечатление, что использование ROS создаст зеркальный файл на диске. После дальнейших экспериментов я создал файл realm, который будет находиться на устройстве, а затем накладывать изменения на другой файл realm на сервере всякий раз, когда происходит изменение. Область на сервере предназначена для резервного копирования, а файл на диске является основным автономным. Я не уверен, что это хорошая/плохая практика, но я отправлю свой эксперимент после завершения, чтобы получить обратную связь. Большое спасибо за Ваш ответ. –
Нет понятия «Царство на сервере». Вы всегда работаете с локальным файлом, даже для запросов/модификаций.Если файл синхронизирован, его история реплицируется на сервере, что позволяет другим клиентам загружать историю и повторно собирать Realm локально. Вы по существу делаете то же самое, что и ROS. – teotwaki