Я совершенно новый с SQLite. У меня есть UITableview, в котором есть разные дни. (Понедельник до воскресенья). Когда я нажимаю, например, в понедельник, другой узел просмотра содержит также UITableview внутри него. В том же viewcontroller у меня есть UIButton, когда я нажимаю на него, я могу добавить данные в мою базу данных SQLite [A], я вставляю имя и день недели (день недели в этом примере " понедельник », потому что я нажал на контроллер понедельника).Данные SQLite, показывающие
Когда я ввожу имя, оно появляется в моем столе. Но когда я возвращаюсь к своему первому диспетчеру просмотра со днями, и я, например, нажимаю, например, в среду, данные, которые я добавил, также появляются там.
Так что мой вопрос; Как я могу показать имя, которое я вставленный в понедельник, только в Tableview понедельник, а не в другие дни (tableviews)
Дополнительная информация:
Таким образом, когда пользователь добавляет имя в «понедельник» отправляю dayoftheweek с добавленным именем в базе данных SQLite, когда пользователь добавляет имя в среду я отправить 'dayoftheweek' среда и т.д ..
База данных Кофе выглядит =
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 (понедельник), а затем отобразить Al элементы, которые содержит «dayoftheweek понедельник»
Моя 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
Но как я могу отобразить т данные, которые вставляются в понедельник в виде понедельника и данные, которые вводятся во вторник в контроллере вторжения и т. д.
i try;
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)
/* начать */ если ([CoffeeObj.dayoftheweek isEqualToString: @ "понедельник"]) {
// 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]];
Говоря как кто-то, кто переехал из Интернета на мобильный, и использовал SQLite3 для модели подкачки моего первого приложения, вам действительно стоит рассмотреть возможность использования [Core Data] (http://developer.apple.com/library/ios/# DOCUMENTATION/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html) Это полностью сдувает SQLite (и использует его в качестве резервного хранилища, если хотите) с тем, насколько он эффективен и встроен. – Josh
Я думаю, что проблема с этим вопросом - это сам вопрос, его действительно трудно понять, что вы хотите. –
@ Leandro i обновил сообщение – Frenck