J'ai copié un fichier sqlite3 existant et rempli dans mon projet; il se trouve (je vérifie que aveciPhone Core Data ne récupère aucune donnée de Sqlite3
- (void)createEditableCopyOfDatabaseIfNeeded {
NSLog(@"Checking if we have to create editable copy of database");
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"hvw.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) return;
NSLog(@"Creating editable copy of database");
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"hvw.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
Je ne viens pas à la « Création d'une copie modifiable de la base de données » -part, de sorte que le fichier est là et trouvé.
Mais mon aille chercher ne retourne pas résultats:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Game" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
Aucune erreur est renvoyée, mais le tableau qui en résulte est vide ...
modifier
J'ai remplacé la ligne
NSString *documentsDirectory = [paths objectAtIndex:0];
par
NSString *documentsDirectory = [self applicationDocumentsDirectory];
et dans le fichier journal, je vois erreur en essayant d'enregistrer ou lire des objets:
Operation could not be completed. (Cocoa error 256.)
Je suppose que mon fichier sqlite a la structure dont il a besoin ... Je l'ai fait selon http://ablogontech.wordpress.com/2009/07/13/using-a-pre-populated-sqlite -database-avec-core-data-sur-iphone-os-3-0/ – swalkner
Si je comprends bien ce post, il a créé une base de données vide SQLite à partir de données de base, puis peuplé les données à la main? Cela ne garantit pas que les relations et autres données pour vos éléments seront dans le format attendu par Core Data. –
hmm ... mais comment puis-je utiliser une base de données pré-remplie? – swalkner