1

私は現在、画像がインターネットから読み込まれ、ローカルデータベースに保存されるため、再度読み込む必要がないiPhone用のゲームに取り組んでいます。これは常にうまくいきました。最近、テスト グループ用に新しいアドホック ディストリビューションを作成しました (SDK 3.1.2 を使用して初めてディストリビューションを作成したとき)。iPhone を 3.1.2 にアップグレードしたすべての人は、データベースに書き込むことができなくなりました。インターネットから毎回画像をロードする必要があります。3.1.2 より前のバージョンの iPhone を使用しているユーザーには問題がなく、以前にビルドされたバージョン (SDK 3.1 以下を使用) は 3.1.2 の iPhone で問題はありません。私がゲームに加えた更新は、ゲーム内のデータ マネージャーとは何の関係もありませんでした。もう1つの奇妙なことは、次のコードを使用してコンソールにメッセージが見つからないことです:

- (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);
}

したがって、sqlite3 は、この問題の解決策を示す可能性のあるエラーをスローしません。SDK 3.1.2 で、データベースにデータを書き込む権限がないように見える理由を知っている人はいますか?

4

1 に答える 1

0

この問題は解決しましたか?3.1.2のDevice/Releaseビルドでも同様の問題が発生しており、if(sqlite3_exec(...));でエラーがスローされます。ステートメントですが、エラーメッセージは返されません。

********更新:デバイスのフルパスを含めるように参照を変更することで、部分的な解決策に到達しました。コード用のGoogleの「checkAndCreateDatabase」メソッド。シミュレーターになかった3.1.2OSのデバイスのsqliteprepareステートメントでまだ失敗があります。**********

-(void)initializeDatabaseFunctions {

databaseName = "RowTable.db";
returnCode = sqlite3_open(databaseName, &sqlite);

NSString *dropRows = [[NSString alloc]initWithFormat:@"DROP TABLE IF EXISTS rows;"];
if(sqlite3_exec(sqlite, [dropRows UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {
    NSLog(@"Error DROP TABLE IF EXISTS rows: %s", errorMsg);
sqlite3_free(errorMsg);}
于 2010-01-02T21:12:23.463 に答える