我这里有问题。我的应用程序将一些对象保存到 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 并且将在没有新对象的情况下返回!