2016-05-06 1 views
0

Je récupère des données à partir d'un serveur, puis j'enregistre toutes les données dans les données de base. Mais quand je l'enregistre, il crée plusieurs copies (données en double).comment remplacer les données dans les données de base? comment résoudre les données en double dans les données de base?

Mes questions sont les suivantes:

  1. Comment gérer les données en double dans les données de base? Comment enregistrer les données de remplacement en utilisant Swift dans CoreData?

+0

Salut Dim San Cing! Bienvenue dans Stack Overflow. Qu'avez-vous essayé? Quelles erreurs obtenez-vous? S'il vous plaît expliquer votre problème un peu plus et ce que vous avez essayé et sur quelle plate-forme afin que nous ayons une meilleure chance de répondre avec précision. –

Répondre

0

Pour enregistrer de nouvelles données dans les données de base, vous pouvez supprimer tous les enregistrements de la données de base, puis vous pouvez enregistrer tous les enregistrements dans les données de base.

Cette fonction permet de supprimer tous les enregistrements des données de base. Vous pouvez appeler cette fonction avant d'enregistrer les enregistrements dans les données de base.

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

J'ai rencontré le même problème. Ça fonctionne bien à ma fin.

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

Vous avez Magasin objet en Array

maintenant

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

mettra à jour enregistrement