Main Contents

[Objective-c] Pré-remplir une base CoreData sur iPhone

octobre 30, 2010

Alors, voilà un problème que j’ai mis du temps à résoudre. Et comme souvent c’est finalement très simple.

Avec CoreData, on peut manipuler facilement les enregistrements d’une base de données. Mais la question était comment avoir déjà les infos en base au lancement de l’application.
Je ne voulais pas avoir un fichier CSV ou XML et être obligé de le parser à chaque ouverture.

Et bien, il suffit de créer votre base au format sqlite (voir mon tuto), évidemment la même structure que la base CoreData, puis de l’ajouter au projet.
Il ne reste plus qu’à modifier une ligne dans la méthode persistentStoreCoordinator du fichier appDelegate de votre projet.

 NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"MaBase.sqlite"]];

Devient :

NSString *storePath = [[self applicationDocumentsDirectory] 
						  stringByAppendingPathComponent: @"MaBase.sqlite"];
	NSURL *storeURL = [NSURL fileURLWithPath:storePath];
 
	// Put down default db if it doesn't already exist
	NSFileManager *fileManager = [NSFileManager defaultManager];
	if (![fileManager fileExistsAtPath:storePath]) {
		NSString *defaultStorePath = [[NSBundle mainBundle] 
								pathForResource:@"MaBase" ofType:@"sqlite"];
		if (defaultStorePath) {
			[fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
		}
	}

Catégorie(s): Développement, iPad, Iphone, Objective-C, Tutorial | Comments (1)

Un commentaire