Я совершенно новичок в SQLite.У меня есть UITableview с содержит разные дни в нем.(С понедельника по воскресенье).Когда я нажимаю, например, в понедельник, другой viewcontroller содержит также UITableview внутри него.В том же viewcontroller у меня есть UIButton, когда я нажимаю на него, я могу добавить данные в свою базу данных SQLite [ A ], я вставляю имя и день недели (деньнедели в этом примере «понедельник», потому что я нажал на контроллер представления понедельника).
Когда я вставляю имя , оно появляется в моем табличном представлении.Но когда я возвращаюсь к своему первому viewcontroller с днями и нажимаю, например, в среду, там также появляются добавленные мной данные.
Так что мой вопрос таков;Как я могу показать имя, которое я вставил в понедельник, только в виде таблицы за понедельник, а не в другие дни (таблицы)
Дополнительная информация:
Поэтому, когда пользователь добавляет имя в «понедельник»«Я отправляю dayoftheweek с добавленным именем в базу данных SQLite, когда пользователь добавляет имя в среду, я посылаю« dayoftheweek »в среду и т. д.
База данных 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];
эта вставка: monday tuesday wednesday thursday friday saturday or sunday
Но как я могу отобразить данные, которые вставляются в понедельникв виде таблицы за понедельник и данных, которые вставляются во вторник в контроллер вторника и т. д.
я пытался;
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]];