У меня есть приложение, в котором мне нужно сохранить напоминание на одной странице, а на другой - отобразить сохраненное напоминание. Я успешно это сделал, используя sqlite3!
На странице просмотра напоминаний пользователь может3 варианта просмотра, просмотр всего, что я уже реализовал, просмотр группы, которая содержит напоминания о 4 группах. Поскольку это всего лишь 4 группы, я создал 4 контроллера представления для 4 уникальных групп. Просто с помощью следующего запроса, который работал идеально:
NSString *sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE grp = 'Friends'"];
Но у меня проблема с просмотром месячной страницы, которая содержит 12 компонентов строки в представлении выбора для выбора пользователем, то есть все 12 месяцев года:
Я обнаружилзапрос на получение всех напоминаний в определенном месяце, скажем, за месяц декабрь, я получил, используя следующий запрос:
NSString *sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-12-01' AND '2012-12-31'"];
Перед входом для просмотра месячной страницы (контроллер), есть месяцВид выбора, как я упоминал ранее, я знаю, что у нас могут быть отдельные страницы контроллера просмотра для отображения данных 12 мкак и в случае с напоминаниями группы представлений, но код становится беспокойным. Поэтому я хочу, чтобы представление таблицы обновлялось автоматически в зависимости от месяца, выбранного в представлении средства выбора (компонент строки).
Я обнаружилпохожий вопрос, но вопрос остался без ответа!
Обновить данные табличного представления на основе компонента строки, выбранного в представлении средства выбора
Я попытался создать экземпляр контроллера класса, гдепредставление выбора присутствует для контроллера представления, где отображаются данные:
ERViewEditController * viewEditController;
и при получении я использовал следующий код:
if(viewEditController.monthPicker selectedRowInComponent:0)
{
sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-01-01' AND '2012-01-31'"];
sql_stmt = [sqlQuery UTF8String];
}
else if(viewEditController.monthPicker selectedRowInComponent:1)
{
sqlQuery = [NSString stringWithFormat:@"select * from reminders WHERE Date BETWEEN '2012-02-01' AND '2012-02-31'"];
sql_stmt = [sqlQuery UTF8String];
}
и т. д.... и так далее в течение всех месяцев, затем использовал следующий код для отображения:
if (sqlite3_prepare_v2(self.remindersDB, sql_stmt, -1, &statament, NULL) == SQLITE_OK)
{
while (sqlite3_step(statament) == SQLITE_ROW)
{
ReminderClass *remin = [[ReminderClass alloc]init];
remin.Name = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 1)]autorelease];
remin.Event = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 2)]autorelease];
remin.Date = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statament, 3)]autorelease];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormat dateFromString:remin.Date];
[dateFormat setDateFormat:@"MMMM dd"];
NSString *dateVal = [dateFormat stringFromDate:date];
remin.Date = dateVal;
[self.monthArray addObject:remin];
[remin release];
}
sqlite3_finalize(statament);
}
Теперь ничего не отображается: (
Как мне выполнить требование, может кто-нибудь помочьменя с вашими ценными предложениями!
Спасибо всем заранее:)