2

このパスで sqlite db を見つける必要があることを読みました。

~/Library/Application Support/iPhone Simulator/YOUR-IOS-VERSION/Applications/UNIQUE-KEY-FOR-YOUR-APP/Documents

しかし、フォルダは空です。シミュレーターでアプリを実行すると、データベースにクエリを実行できます。データベースはもともとアプリのリソースフォルダーにあります。

私はxcode 3.2.6とOS X 10.6.8で作業しています

他に探すことができる場所はありますか?

どうもありがとう。ラポ

-(void)insertError:(Frage *) f 
           answer2:(NSString *) answer2 
           answer3:(NSString *) answer3 
 {

    int resconn = sqlite3_open([pathDB UTF8String], &database);

    if (resconn == SQLITE_OK) {

        NSString * sql = @"Insert into errors (id, answer2,answer3) values (?,?,?)";
        const char * sqlStatement = [sql UTF8String];

        sqlite3_stmt * compiledStatement;

        if (sqlite3_prepare_v2(database, sqlStatement, -1 , &compiledStatement, NULL) == SQLITE_OK) {
            sqlite3_bind_text(compiledStatement, 1, [f.id UTF8String], -1 , SQLITE_TRANSIENT);
            sqlite3_bind_int(compiledStatement, 2, [answer2 intValue]);
            sqlite3_bind_int(compiledStatement, 3, [answer3 intValue]);
        } 
        if (!sqlite3_step(compiledStatement) == SQLITE_DONE) {
            //
        }   
        sqlite3_finalize(compiledStatement);

    }
    sqlite3_close(database);
}
4

1 に答える 1

0

アプリケーションの Documents フォルダにあるリソース データベースにアクセスするには、アプリケーションの起動時にリソース データベースをそこにコピーする必要があります。

データベース ファイルが xcode プロジェクトの resources フォルダーにある場合、アプリのドキュメント ディレクトリに自動的にコピーされません。

これを行うには、次を使用できます。

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSError *error;

NSString *databasePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YOUR_DB_IN_RESOURCES"];

[[NSFileManager defaultManager] copyItemAtPath:databasePath 
                                                toPath:[NSString stringWithFormat:@"%@/%@",documentsDirectory,@"YOUR_DB"]
                                                 error:&error];

その後、既存のコードを使用してドキュメント フォルダーにあるデータベースにアクセスできるようになります ([pathDB UTF8String]リソースではなくドキュメント ディレクトリを指す必要があります)。

おっしゃるとおり、リソース内の DB は引き続き使用できますが、アプリを再起動するたびに消去されます。秘訣は、アプリがデバイスから手動で削除されるまでデータベースをドキュメント フォルダーにコピーすることです (ドキュメント フォルダーはアプリの更新中にも保持されるため、ユーザーがアプリを更新してもデータベースは残ります)。

お役に立てれば :)

于 2012-05-23T15:02:59.437 に答える