Realm Swift Bundle Data - PullRequest
       93

Realm Swift Bundle Data

0 голосов
/ 27 апреля 2020

Я преобразовал файл 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

Объект Tree:

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 базы данных в новом файле, как я могу получить доступ ко второй базе данных с данными или как правильно скопировать файл?

Кроме того, что произойдет, когда я сделаю идентификатор для первичного ключа? Очевидно, у меня нет такого параметра в исходном загруженном файле, поэтому я думаю, что мне нужно как-то перенести данные ...

1 Ответ

0 голосов
/ 30 апреля 2020

Когда дело доходит до импорта, импортируемый файл должен иметь очень определенный c формат вместе с указанным c именем файла

Ваше имя объекта области - Дерево , поэтому имя импортируемого файла должно соответствовать

Tree.csv

вместе с тем, что первая строка файла должна соответствовать именам свойств классов, разделенных запятой

id,br,nm1...

Я бы предложил создать очень маленький тестовый файл для импорта с 3-4 строками, чтобы он заработал. Затем, как только вы освоите это, импортируйте большой файл.

...