как переопределить данные в основных данных ? как решить дубликаты данных в основных данных?

Я получаю данные с сервера, а затем сохраняю все данные в Core Data.
Но когда я сохраняю его, он создает несколько копий (дубликатов данных).

Мои вопросы :

  1. Как обрабатывать дубликаты данных в основных данных?

  2. Как сохранить переопределенные данные с помощью Swift в CoreData?

2 ответа

  1. EXAMPLE :  
    
     let fetchReq = NSFetchRequest(entityName: "Theater")
        var array =  [Theater]()
        fetchReq.returnsObjectsAsFaults = false
        do {
            let obj = try moc.executeFetchRequest(fetchReq) as!  [Theater]
            for  details:Theater in obj{
    
    
                array.append(details)
                print(details.movies)
            }
    
        } catch {
            print("Error in Fetching")
            return nil
        }
    

    У вас есть хранить objet в массиве

    сейчас

        let obj:Theater = array[0] as! Theater
        //Update Record 
      do {
            try obj.managedObjectContext?.save()
        } catch {
            print("Exception")
        }
    

    Обновит Запись

  2. Чтобы сохранить новые данные в основных данных, можно удалить все записи из основных данных, а затем сохранить все записи в основных данных.

    Вот функция для удаления всех записей из основных данных. эту функцию можно вызвать перед сохранением записей в основных данных.

     func deleteEverything()
     {
        let appDel = UIApplication.sharedApplication().delegate as! AppDelegate
        let context = appDel.managedObjectContext
        let coord = appDel.persistentStoreCoordinator
    
        let fetchRequest = NSFetchRequest(entityName: "Categorytbl") // Your entity name
        if #available(iOS 9.0, *)
        {
            let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
            do
            {
                try coord.executeRequest(deleteRequest, withContext: context)
            }
            catch let error as NSError
            {
                debugPrint(error)
            }
        }
        else
        {
            // Fallback on earlier versions
            do{
                let fetchedObjects : NSArray = try context.executeFetchRequest(fetchRequest)
                if(fetchedObjects.count > 0)
                {
                    for currObj in fetchedObjects
                    {
                        context.deleteObject(currObj as! NSManagedObject)
                    }
                    let _ : NSError! = nil
                    do {
                        try context.save()
                    } catch {
                        print("Error in Deletion : \(error)")
                    }
                }
            }
            catch let error as NSError
            {
                debugPrint(error)
            }
        }
    }
    

    У меня была такая же проблема. Его работа хорошо на моем конце.