データベースを使用してテーブル ビューにデータを入力しています。
NSMutable Array
で of オブジェクトを作成しましたAppDelegate
。配列は、次のように DB から取り込まれます。
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char *sql = "select barcode, vintage, vineyard, varietal from wine";
sqlite3_stmt *statement;
if(sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
while(sqlite3_step(statement) == SQLITE_ROW) {
NSString *barcode = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)];
DBHelper *wineObj = [[DBHelper alloc] initWithBarcode:barcode];
wineObj.vintage = sqlite3_column_int(statement, 1);
wineObj.vineyard = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 2)];
wineObj.varietal = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];
[appDelegate.wineList addObject:wineObj];
[wineObj release];
}
}
}
すべてのデータは、バーコードのタイプが である配列に正しく入りNSString *
ます。ただし、テーブル ビューを表示すると、バーコードが「 」に変わりVariable Not a CFString
ます。アイテムを選択するときは、次のものを使用しています。
//get the bottle details for selected object
DBHelper *tempObj = [appDelegate.wineList objectAtIndex:indexPath.row];
DBHelper getBottleDetails:[appDelegate getDBPath]:tempObj.barcode];
バーコードが として解釈されなくなったためNSString
、アプリがクラッシュします。バーコードが引き続き有効であることを確認するにはどうすればよいですか?