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