Realm Swift Bundle Data

问题描述 投票:0回答:1

我把一个csv文件转换为一个境界文件,我想在我的应用程序中使用它.这是我目前的代码。

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)
    }
}

在第一次启动时,它创建了一个新的文件,但是这个文件和原来的文件有点不同。

原来的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"
//    }
    
}

我的新文件里好像有两个数据库 如何访问第二个数据库的数据 或者如何正确复制文件?

另外,当我把id设为主键时,会发生什么?很明显,我在原来下载的文件中没有这样的参数,所以我想我需要以某种方式迁移数据... ...

swift database realm bundle data-migration
1个回答
1
投票

当涉及到导入时,导入的文件必须是一个非常特定的格式,以及一个特定的文件名。

您的境界对象名称是 ,所以导入的文件名需要与

Tree.csv

以及文件的第一行需要与类的属性名相匹配,用逗号隔开。

id,br,nm1...

我建议创建一个很小的测试文件来导入,用3-4行来让它工作。然后,一旦你掌握了,再导入大文件。

© www.soinside.com 2019 - 2024. All rights reserved.