Я совершенно новичок в SQLite. У меня есть UITableview, в котором есть разные дни. (С понедельника по воскресенье). Когда я нажимаю, например, в понедельник, другой контроллер представления содержит также UITableview внутри него. В том же контроллере просмотра у меня есть UIButton, когда я нажимаю на него, я могу добавить данные в свою базу данных SQLite [ A ], я вставляю имя и день недели (The day недели в этом примере 'понедельник', потому что я щелкнул по контроллеру представления понедельника).
Когда я вставляю имя , оно появляется в моем табличном представлении. Но когда я возвращаюсь к своему первому контроллеру просмотра с днями и нажимаю, например, в среду, добавленные мной данные также появляются там.
Итак, мой вопрос; Как я могу показать имя, которое я вставил в понедельник, только в табличном представлении понедельника, а не в другие дни (представления таблиц)
Дополнительная информация:
Итак, когда пользователь добавляет имя в «понедельник», я отправляю день недели с добавленное имя в базу данных SQLite, когда пользователь добавляет имя в среду, я отправляю «dayoftheweek» в среду и т. д.
Database Coffee выглядит так =
CoffeeName | dayoftheweek
-------------------------
Hello world | Monday
Hello Planet | Wednesday
Hello Animal | Monday
Hello STOVW | Friday
[A] const char * sql = "insert into Coffee (CoffeeName, dayoftheweek) Values (?,?)";
Мне нужно проверить, совпадает ли день (например) понедельник с dayoftheweek (понедельник), а затем отобразить все элементы, содержащие 'dayoftheweek monday'
Мой sqlite выглядит так:
+ (void) getInitialDataToDisplay:(NSString *)dbPath {
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char *sql = "select coffeeID, coffeeName from coffee";
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
Coffee *coffeeObj = [[Coffee alloc] initWithPrimaryKey:primaryKey];
coffeeObj.LessonName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
coffeeObj.dayoftheweek = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];
coffeeObj.isDirty = NO;
[appDelegate.coffeeArray addObject:coffeeObj];
}
}
}
else
sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory.
}
- (void) addCoffee1 {
if(addStmt == nil) {
const char *sql = "insert into Coffee(CoffeeName, dayoftheweek) Values(?, ?)";
if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
}
sqlite3_bind_text(addStmt, 1, [dayoftheweek UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(addStmt))
NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
//SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
LesID = sqlite3_last_insert_rowid(database);
//Reset the add statement.
sqlite3_reset(addStmt);
}
Вставка:
coffeeObj.dayoftheweek = [NSString stringWithFormat:@"%@", dayoftheweek];
эта вставка: понедельник вторник среда четверг пятница суббота или воскресенье
Но как я могу отобразить данные, которые вставлены в понедельник в табличном представлении понедельника, и данные, которые вставлены во вторник в контроллере вторника и т. д.
Я попробовал;
if([coffeeObj.dayoftheweek isEqualToString:@"Monday"]) {
cell.day.text = coffeeObj.LessonName;
} else {
}
Отображение:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CustomCellIdentifier = @"DaycusViewController";
DaycusViewController *cell = (DaycusViewController *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"DaycusViewController"
owner:self options:nil];
for (id oneObject in nib) if ([oneObject isKindOfClass:[DaycusViewController class]])
cell = (DaycusViewController *)oneObject;
}
//Get the object from the array.
Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:indexPath.row];
cell.Name.text = CoffeeObj.CoffeeID;
cell.Day.text = CoffeeObj.dayoftheweek;
//i tried this: (not working)
/ * begin * / if ([CoffeeObj.dayoftheweek isEqualToString: @ "Monday"]) {
// cell.Name.text = CoffeeObj.CoffeeID;
//cell.Day.text = CoffeeObj.dayoftheweek;
} else {
}
/* end */
//it need's to display in this example only things where dayoftheweek is monday but.
return cell;
}
вызов функции getInitialDataToDisplay
//Copy database to the user's phone if needed.
[self copyDatabaseIfNeeded];
//Initialize the coffee array.
NSMutableArray *tempArray = [[NSMutableArray alloc] init];
self.coffeeArray = tempArray;
[tempArray release];
//Once the db is copied, get the initial data to display on the screen.
[Coffee getInitialDataToDisplay:[self getDBPath]];