Je fais une application avec de nombreuses opérations de base de données. Comme SQLite met en cache des données, dans ma méthode applicationDidReceiveMemoryWarning, je ferme la base de données et je l'ouvre à nouveau pour supprimer les données mises en cache.Fin de l'application en raison d'une exception non interceptée 'NSInternalInconsistencyException', raison: 'Erreur: impossible d'ouvrir la base de données avec le message' pas une erreur '.'
Lorsque le faire, je reçois cette erreur
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Error: failed to open database with message 'not an error'.'
Voici le code que je utilise pour fermer la base de données et ouvrir à nouveau où la base de données est de type sqlite3 * [MySQLInter finalizeStatements];
if(sqlite3_close(database) == SQLITE_OK){
//open again
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sql"];
if(sqlite3_open([path UTF8String], &database) != SQLITE_OK){
NSAssert1(0, @"Error: failed to open database with message '%s'.", sqlite3_errmsg(database));
}
}
else{
NSAssert1(0, @"Error: failed to close database on memwarning with message '%s'.", sqlite3_errmsg(database));
}
Comment éviter cela?