Insertions de données - Core Data

Bonjour,

je débute avec Core Data, et j'aimerais bien utiliser ce Framework pour mon appli.

J'ai crée les entités comme il faut, et j'ai bien réussi à  y insérer du contenu.


<br />
NSManagedObjectContext *context = [self managedObjectContext];<br />
    Entite *entName = [NSEntityDescription insertNewObjectForEntityForName:@&quot;Entite&quot; inManagedObjectContext:context];<br />
    [riddleInfo setValue:@&quot;test&quot; forKey:@&quot;title&quot;];<br />




Le problème c'est qu'à  chaque lancement de l'application, une nouvelle valeur "test" s'ajoute à  l'entité. C'est très logique puisque j'ai inséré les données dans la méthode didFinishLaunchingWithOptions:



Donc la question serais de savoir comment insérer des données de manière à  ne pas changer le contenu des entités à  chaque lancement de l'application.



Merci
Mots clés:

Réponses

  • Réponse logique à  ton argument logique : ne pas faire d'insert dans didFinishLaunching... Ensuite t'as le droit de faire des insert quand tu veux dans ton appli. Je comprends pas trop ton soucis.
  • AliAli Membre
    octobre 2012 modifié #3
    'Kubernan' a écrit:


    Réponse logique à  ton argument logique : ne pas faire d'insert dans didFinishLaunching... Ensuite t'as le droit de faire des insert quand tu veux dans ton appli. Je comprends pas trop ton soucis.




    Oui c'est bien ça mon problème, ou je dois insérer les données pour qu'elles ne soient pas modifiées à  aucun moment après.
  • Tu veux dire que tu veux faire une initialisation (genre au tout premier lancement de ton appli) et que c'est init. ne se répète pas à  chaque fois ?

    Si c'est cela tu peux :

    1- Faire un fetch d'une donnée particulière et pertinente qui, si elle s'avère absente de core data signifiera que tu dois initialiser core data.

    2- Tester la présente du fichier core data. S'il n'existe pas c'est qu'il faut que tu initialise ton core data.
  • J'ai compris ce que tu veux dire. Mais l'implémenter vraiment reste un truc un peu avancé pour moi, je vais chercher quand même.
  • C'est vraiment pas compliqué. La seconde option me parait plus facile : les objets de ton core data sont stockés dans un fichier. Au lancement de ton appli (didFinish...) il te suffit de tester la présence de ce fichier comme par exemple :
    <br />
    	NSFileManager *fileManager = [NSFileManager defaultManager];<br />
    	NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@&quot;MonFichierCoreData.sqlite&quot;];<br />
    	if (&#33;[fileManager fileExistsAtPath:[storeURL path]]) { // Aucun fichier core data<br />
    		[self setUpCoreDataStack];<br />
    		[self initData]; // Insert de mes objets dans core data<br />
    	} else {<br />
    		[self setUpCoreDataStack];<br />
    	}<br />
    




    le setUpCoreDataStack contiendra toute la partie d'init des éléments du core data (persistent store, managed object context).
Connectez-vous ou Inscrivez-vous pour répondre.