Скажем, у меня есть стол под названием Инциденты и стол под названием Устройства.
Каждое устройство имеет CI-код.
Я хочу создать табличное представление, в разделах которого указаны имена устройств (CI) и каждая строка для представления инцидента.
Чтобы получить правильное количество строк в каждом разделе, я использую следующий код:
NSMutableArray *lijstDevices = [[NSMutableArray alloc] init];
const char *dbpath = [appDelegate.databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat:@"SELECT DISTINCT CI FROM Devices"];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
// NSLog(@"SQLite ROW for filling in cell");
NSString *addDev = [[NSString alloc] initWithUTF8String:(const char *)sqlite3_column_text(statement, 0)];
[lijstDevices addObject:addDev];
}
sqlite3_finalize(statement);
}
NSString *ciNaam = [lijstDevices objectAtIndex:section];
NSString *querySQL2 = [NSString stringWithFormat:@"SELECT COUNT(ID) FROM Incidents WHERE CI='%@'", ciNaam];
const char *query_stmt2 = [querySQL2 UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt2, -1, &statement, NULL) == SQLITE_OK)
{
//NSLog(@"SQLite ok in rowforindexpath");
if(sqlite3_step(statement) == SQLITE_ROW) {
// NSLog(@"SQLite ROW for filling in cell");
teller = sqlite3_column_int(statement, 0);
}
else
{
NSLog(@"Not.. good...");
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
Здесь возникает проблема: разделы заполнены правильно. Некоторым разделам нужен 1 ряд, другим разделам нужно 2 ряда. Всякий раз, когда я запускаю программу, каждый раздел, которому требуется 1 строка, заканчивается 0 строками, в то время как каждый раздел с 2 необходимыми строками заканчивается только 1 строкой.
Кроме того, у меня была ошибка, из-за которой таблицы не очищались. Поэтому, если я запускаю его дважды, база данных увеличивается вдвое. В этом случае каждый, который нуждался в 1, имеет 2 строки. Каждый из которых нуждался в 2, имел 4 ряда. Это, очевидно, уже не так, но это может помочь понять, что не так.
У кого-нибудь есть идеи ???