领域 Swift 捆绑包数据

Realm Swift Bundle Data

我将一个 csv 文件转换为一个领域文件,我想在我的应用程序中使用它。 这是我的代码 atm:

func inLibrarayFolder(fileName: String) -> URL {
    return URL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)[0], isDirectory: true)
        .appendingPathComponent(fileName)
}


func copyPreBundleDataCompeletely() {
    let mainRealmUrl = inLibrarayFolder(fileName: "main.realm")
    let bundleUrl = Bundle.main.url(forResource: "treesFull", withExtension: "realm")!
    
    //After launch after fresh install (if main.realm never created)
    if (!FileManager.default.fileExists(atPath: mainRealmUrl.path)){
        //copy bundled data into writable location compeletely
        try! FileManager.default.copyItem(
            at: bundleUrl, to: mainRealmUrl)
        print(mainRealmUrl)
    }
}

在第一次启动时,它创建了新文件,但该文件与原来的文件有点不同:

original db copied db

树对象:

class Tree: Object {
    @objc dynamic var id: Int32 = 0
    @objc dynamic var br = ""
    @objc dynamic var nm1 = ""
    @objc dynamic var nm2 = ""
    @objc dynamic var nm3 = ""
    @objc dynamic var longitude = 0.0
    @objc dynamic var latitude = 0.0
 
//    override static func primaryKey() -> String? {
//        return "id"
//    }
    
}

看起来我在新文件中有 2 个数据库,如何访问第二个数据库或如何正确复制文件?

还有,如果我把id设为主键会怎样?显然我在原始下载文件中没有这样的参数,所以我想我需要以某种方式迁移数据...

导入时,导入的文件必须采用非常特定的格式以及特定的文件名

你的Realm对象名称是Tree,所以导入的文件名需要匹配

Tree.csv

此外,文件的第一行需要匹配 类 属性 名称,逗号分隔

id,br,nm1...

我建议创建一个非常小的测试文件来导入 3-4 行以使其正常工作。然后,一旦你掌握了,然后导入大文件。