0

奇妙なもの。小さな SQLite データベースにクエリを実行しています。そこからランダムな結果を取得したい。これは非常にうまく機能しますが、約 10 ~ 15 回のクエリの後、同じ結果に行き詰まります。私は明らかに何かを見逃しているに違いありませんが、何がわからないのですか。これは、私が何度も呼び出しているメソッドを示すコードです。

 -(NSString*)setBtnImage:(UIButton*) btn{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];
    NSString *result;
    NSString *resultTemp;
    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK){
        const char *sql = "SELECT * FROM main ORDER BY RANDOM() LIMIT 1;";
        sqlite3_stmt *searchStatement;
        if(sqlite3_prepare_v2(database, sql, -1, &searchStatement, NULL) == SQLITE_OK){
            while (sqlite3_step(searchStatement) == SQLITE_ROW) {
                NSString *mot = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 1)];
                NSString *nom_fichier = [NSString stringWithUTF8String:(char *)sqlite3_column_text(searchStatement, 3)];
                resultTemp = [mot stringByAppendingString:@" "];
                result = [resultTemp stringByAppendingString:nom_fichier];
                UIImage *image = [UIImage imageNamed:nom_fichier];
                [btn setImage:image forState:UIControlStateNormal];
                [btn setTitle:mot forState:UIControlStateNormal];
            }
        }
        sqlite3_finalize(searchStatement);
    }
    return result;
}

ボタンに適用するファイルを知るために、データベースからファイル名を取得していることがわかります。以上です。永遠に同じ結果に固執するまで、それは非常にうまく機能します。ただし、エラーメッセージはありません。

Xcode 4.6 を使用しています

どんな助けでも感謝します。

ありがとう、皆さん。

4

1 に答える 1