在 swift 中复制现有领域数据库时出现问题
Issue with copying existing realm database in swift
我有一个领域数据库,我正在尝试将其复制到 swift 项目中。数据库已成功复制数据,但它使一列为空并将其与其他数据库分开并将其作为空列放在最后。
复制前的数据库基础是 like this. and after copying is like this。
我无法理解复制数据库的行为代码。
guard let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let finalDatabaseURL = documentsUrl.appendingPathComponent("default.realm")
do {
if !fileManager.fileExists(atPath: finalDatabaseURL.path) {
if let dbFilePath = Bundle.main.path(forResource: "default", ofType: "realm") {
try fileManager.copyItem(atPath: dbFilePath, toPath: finalDatabaseURL.path)
} else {
print("db not in the app bundle")
}
} else {
print("Database file found at path: \(finalDatabaseURL.path)")
}
} catch {
print("Unable to copy: \(error.localizedDescription)")
}
试试下面的代码:
let defaultPath = try! Realm().configuration.fileURL?.path
let path = Bundle.main.path(forResource: "default-v0", ofType: "realm")
if let defaultPath = defaultPath, let bundledPath = path {
do {
if FileManager.default.fileExists(atPath: defaultPath) {
try FileManager.default.removeItem(atPath: defaultPath)
}
try FileManager.default.copyItem(atPath: bundledPath, toPath: defaultPath)
} catch {
print("Error copying pre-populated Realm \(error)")
}
}
_ = try! Realm()
这似乎不是同一个数据库或其副本:列名不同 - 在一个屏幕截图中是 Sub_category,在第二个屏幕截图中是 sub_category 注意大写字母'S' 与小写 's'.
查看您的 Realm 模型定义,或者检查您的迁移代码(如果有)。我认为问题中的代码与您描述的问题无关。
我有一个领域数据库,我正在尝试将其复制到 swift 项目中。数据库已成功复制数据,但它使一列为空并将其与其他数据库分开并将其作为空列放在最后。 复制前的数据库基础是 like this. and after copying is like this。 我无法理解复制数据库的行为代码。
guard let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
let finalDatabaseURL = documentsUrl.appendingPathComponent("default.realm")
do {
if !fileManager.fileExists(atPath: finalDatabaseURL.path) {
if let dbFilePath = Bundle.main.path(forResource: "default", ofType: "realm") {
try fileManager.copyItem(atPath: dbFilePath, toPath: finalDatabaseURL.path)
} else {
print("db not in the app bundle")
}
} else {
print("Database file found at path: \(finalDatabaseURL.path)")
}
} catch {
print("Unable to copy: \(error.localizedDescription)")
}
试试下面的代码:
let defaultPath = try! Realm().configuration.fileURL?.path
let path = Bundle.main.path(forResource: "default-v0", ofType: "realm")
if let defaultPath = defaultPath, let bundledPath = path {
do {
if FileManager.default.fileExists(atPath: defaultPath) {
try FileManager.default.removeItem(atPath: defaultPath)
}
try FileManager.default.copyItem(atPath: bundledPath, toPath: defaultPath)
} catch {
print("Error copying pre-populated Realm \(error)")
}
}
_ = try! Realm()
这似乎不是同一个数据库或其副本:列名不同 - 在一个屏幕截图中是 Sub_category,在第二个屏幕截图中是 sub_category 注意大写字母'S' 与小写 's'.
查看您的 Realm 模型定义,或者检查您的迁移代码(如果有)。我认为问题中的代码与您描述的问题无关。