我有一个本地 Realm 数据库,有 160000 行。我想将它复制到本地路径,以便 Realm 能够将其用作官方数据库,并在线同步。 (所以我的空 Db 将被同步)。我可以这样做吗? (此时,不起作用,因为它将 Db 复制到本地文件夹中,而不是用户特定文件夹中)
func loginCompletedA(user: SyncUser) {
let realmURL = URL(string: “realm://xxx.compute-1.amazonaws.com:9080/beerUsers”)!
var configuration = Realm.Configuration.defaultConfiguration
configuration.syncConfiguration = SyncConfiguration(user: user, realmURL: realmURL)
let defaultURL = configuration.fileURL!
//let defaultParentURL = defaultURL.deletingLastPathComponent()
if let v0URL = Bundle.main.url(forResource: “default”, withExtension: “realm”){
do {
//if !ifNotExists {
try FileManager.default.removeItem(at: defaultURL)
//}
try FileManager.default.copyItem(at: v0URL, to: defaultURL)
} catch {}
do {
try FileManager.default.copyItem(at: v0URL, to: defaultURL)
} catch {}
}else{
}
let realm = try! Realm(configuration: configuration)
let session = user.session(for: realmURL)!
downloadToken = session.addProgressNotification(for: .download, mode: .reportIndefinitely) {
print(“download progress: \($0)“) // This is never called.
}
uploadToken = session.addProgressNotification(for: .upload, mode: .reportIndefinitely) {
print(“upload progress: \($0)“) // This is never called.
}
}
最佳答案
只是为了确认我认为你在问什么。您预捆绑了一个 Realm 数据库文件,其中包含 160,000 行数据以及您的应用程序。当新用户登录应用程序时,数据会同步到他们的帐户。
未同步的 Realm 文件和同步的 Realm 文件是两种不同的文件格式,因此无法将一种文件转换为另一种文件。将预先捆绑的离线 Realm 复制到用户控制的目录,然后尝试应用 syncConfiguration
对象不会执行任何操作。
对此最简单的解决方案是创建一个新的同步 Realm,然后在应用首次启动时将数据从预捆绑的 Realm 复制到同步 Realm。
let bundledRealmURL = Bundle.main.url(forResource: “default”, withExtension: “realm”)!
let localConfiguration = Realm.Configuration()
configuration.readOnly = true
configuration.fileURL = bundledRealmURL
let localRealm = try! Realm(configuration: configuration)
let syncConfiguration = Realm.Configuration()
syncConfiguration.syncConfiguration = SyncConfiguration(user: user, realmURL: realmURL)
let syncRealm = try! Realm(configuration: configuration)
let myObjects = localRealm.objects(MyObject.self)
try! syncRealm.write {
for myObject in myObjects {
let newObject = MyObject(value: myObject)
syncRealm.add(newObject)
}
}
我们正在探索如何更容易地为 Realm 的 future 版本“预填充”同步的 Realms。 :)
关于swift - Realm 对象服务器。同步初始本地数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748387/