在 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 模型定义,或者检查您的迁移代码(如果有)。我认为问题中的代码与您描述的问题无关。