奇妙なもの。小さな 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 を使用しています
どんな助けでも感謝します。
ありがとう、皆さん。