値のコレクションをさまざまなタイプの列を持つテーブルに格納しています。iPhone シミュレーターでアプリを実行すると、挿入と選択が正常に機能します。ただし、実際のデバイスで実行してデータを選択すると、テーブルのテキスト列の一部を取得できないように見えます (残りの列は正しく取得されているようです)。文字列を含むダイアログを表示する必要がある場合は、そうではありません。空のダイアログが表示されますが、文字列を含むダイアログはシミュレーターに正しく表示されました。
これは、挿入のコード スニペットです。
if(sqlite3_prepare_v2(database, sqlStatement,
-1, &compiledStatement, NULL) == SQLITE_OK)
{
sqlite3_bind_int(compiledStatement, 1, userData.ID);
sqlite3_bind_double(compiledStatement, 2, userData.Location.Lat);
sqlite3_bind_double(compiledStatement, 3, userData.Location.Lon);
sqlite3_bind_text(compiledStatement, 4, [userData.Name UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStatement, 5, [userData.Surname UTF8String], -1, SQLITE_TRANSIENT);
}
if(sqlite3_step(compiledStatement) == SQLITE_DONE) {
sqlite3_finalize(compiledStatement);
}
else {
NSLog(@"%d",sqlite3_step(compiledStatement));
}
}
sqlite3_close(database);
そして、これは選択です:
if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
UserData *userData = [[UserData alloc] init];
userData.ID = sqlite3_column_int(compiledStatement, 0);
char *name = sqlite3_column_text(compiledStatement, 1);
if (name == nil)
userData.Name = @"";
else
userData.Name = [NSString stringWithUTF8String: name];
[list addObject:userData];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
データベースのデータ管理がシミュレーターでうまく動作する理由はまったくわかりません (SQLite Manager プラグインがあり、データが正しく保存および取得されます) が、実際の iPhone ではそうではありません。デバイスで何が起こっているかを確認するにはどうすればよいですか? 誰かがこれに似たようなことを経験しましたか?
ありがとう!