ここで問題があります。私のアプリはいくつかのオブジェクトをSQLiteデータベースに保存し、そのデータベースが私のUITableViewのソースです。実行時にデータベースに新しいオブジェクトを追加した場合を除いて、すべてが正常に機能します。UITableViewはそのコンテンツを更新しません。これが私のコードです:
- (void)viewDidLoad
{
[self daten];
[super viewDidLoad];
}
-(NSMutableArray *) daten{
if (daten)
return daten;
self.daten = [[NSMutableArray alloc] init];
@try {
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *dbPath = [self getDBPath];
BOOL success = [fileMgr fileExistsAtPath:dbPath];
if(!success)
{
NSLog(@"Cannot locate database file '%@'.", dbPath);
}
if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
{
NSLog(@"An error has occured: %s", sqlite3_errmsg(db));
}
const char *sql = "SELECT * FROM Daten";
if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
{
NSLog(@"Problem with prepare statement: %s", sqlite3_errmsg(db));
}else{
while (sqlite3_step(sqlStatement)==SQLITE_ROW) {
.......
}
}
}
@catch (NSException *exception) {
NSLog(@"Problem with prepare statement: %s", sqlite3_errmsg(db));
}
@finally {
sqlite3_finalize(sqlStatement);
sqlite3_close(db);
return daten;
}
}
問題はここにあると思います:
if (daten)
return daten;
self.daten = [[NSMutableArray alloc] init];
しかし、データベースが実行時に新しいオブジェクトを取得した場合、その時点で配列はnilではなく、新しいオブジェクトなしで返されます。