Предварительная загрузка JSON в Core Data с помощью Swift4 и нескольких отношений - PullRequest
0 голосов
/ 04 июля 2018

Кто может мне помочь с кодом?

Мне нужно импортировать / предварительно загрузить мой JSON Моя модель данных имеет три объекта и взаимосвязи друг с другом

Лайк и категории

Я хочу импортировать все свои товары и предоставить им каталог, если приложение запускается впервые.

Но если я сделаю это так, cat01 будет вставлен несколько раз, если я буду использовать его и для других предметов. Я хочу вставить 500 элементов и установить отношение только к 5 категориям - как я могу это сделать? А иногда один предмет имеет две категории?

Спасибо за помощь.

"entity1":
[{
            "name": "Item1",
            "info": "Loremipsum",
            "categorie": {
                "cat": "cat01"
            },
            "entity2": [{
                    "name": "ItemWithRelationship",
                    "info": "LoremipsumDolor"
            }]
}]




//Preload - Relationships 2
    fileprivate func preloadWithRelationshipsDECODE() {
        guard let preloadFileURL = Bundle.main.url(forResource: "preload_DB", withExtension: "json") else {
            return
        }

        guard let data = try? Data(contentsOf: preloadFileURL) else {
            return
        }

        do {

            //mit Array MIT Relationship
            let results = try JSONDecoder().decode(Raum.self, from: data)
            print(results.raum.count)

            for result in results.entity1{

                //Raum-DB
                let entityRaum: String = String(describing: Raumliste.self)
                let room = NSEntityDescription.insertNewObject(forEntityName: entityRaum, into: self.managedContext) as! Raumliste

                room.name = result.name
                room.info = result.info


                //Categorie
                let entityCat: String = String(describing: categorie.self)
                let cat = NSEntityDescription.insertNewObject(forEntityName: entityCat, into: self.managedContext) as! Categorie

                cat.name = result.categorie?.cat
                myCat.categorie_rls  = cat

                myCat.categorie_rls?.name = result.categorie?.cat


                for task in result.entity2!{
                    //Entitiy2-DB
                    let entityNR2: String = String(describing: MyEntity.self)
                    let extra = NSEntityDescription.insertNewObject(forEntityName: entityNR2, into: self.managedContext) as! MyEntity

                    extra.name = task.name!
                    room.addToExtraListe_rls(extra)

                    extra.info = task.info!

                    room.addToExtraListe_rls(extra)


                    saveContext()
                }


                do {
                    try managedContext.save()
                    print("gespeichert")

                } catch {
                    print("Error saving todo: \(error)")
                    print ("No value associated with key someKey (\"actual_key_if_you_defined_your_own\").")
                }
            }



        } catch let error as NSError {
            print("Fehler: \(error.localizedDescription)")
        }
    }
...