Je travaille actuellement sur un jeu pour l'iphone, où les images sont chargées à partir d'Internet puis stockées dans la base de données locale afin qu'elles n'aient pas à être rechargées. Cela a toujours bien fonctionné. Récemment, j'ai créé une nouvelle distribution adhoc pour le groupe de test (la première fois que j'ai créé la distribution en utilisant SDK 3.1.2) et maintenant tous ceux qui ont mis à jour leur iphone en 3.1.2 ne peuvent plus écrire dans la base de données. Il faut donc charger les images à chaque fois sur Internet. Les personnes ayant une version d'iphone inférieure à 3.1.2 n'ont aucun problème et les versions de build antérieures (avec SDK 3.1 ou inférieur) n'ont aucun problème sur les iphones avec 3.1.2. Les mises à jour que j'ai apportées au jeu n'avaient rien à voir avec le datamanager dans le jeu. Une autre chose étrange est que je ne trouve pas de messages dans la console en utilisant le code suivant:sqlite3 problème de permission d'écriture sur l'iphone 3.1.2
- (void) saveImage:(NSString *)imagePath withData:(NSData *)imageData {
if (insert_image_statement == nil){
const char *sql2 = "INSERT INTO image (imagePath, imageData) VALUES (?, ?);";
if (sqlite3_prepare_v2(database, sql2, -1, &insert_image_statement, NULL) != SQLITE_OK) {
NSLog(@"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
}
sqlite3_bind_text(insert_image_statement, 1, [imagePath UTF8String], -1, NULL);
sqlite3_bind_blob(insert_image_statement, 2, [imageData bytes], [imageData length], NULL);
int success = sqlite3_step(insert_image_statement);
if (success == SQLITE_ERROR){
NSLog(@"Error: failed to insert statement with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_reset(insert_image_statement);
}
Ainsi, le sqlite3 ne jette pas une erreur qui pourrait me diriger vers la solution de ce problème. Est-ce que quelqu'un sait pourquoi avec SDK 3.1.2 je ne semble pas avoir la permission d'écrire les données dans la base de données?
Quelle erreur voyez-vous? Où est votre base de données? Quels résultats obtenez-vous de sqlite3_bind_text et sqlite3_bind_blob? Je peux vous assurer que nous écrivons toujours des blobs dans notre base de données avec 3.1.2, et notre SQL est beaucoup plus compliqué que cela. Je doute que vous ayez trouvé un bogue dans SQLite. –
Je ne vois aucune erreur, la seule chose que je remarque est que le blob n'est pas écrit dans la base de données. La base de données se trouve dans documentsDirectory. L'étrange est que cela n'arrive que dans la distribution AdHoc, si je construis l'application directement sur le téléphone, cela n'arrive pas. –