Сохранить кнопку с изображением в базе данных sqlite3 - PullRequest
0 голосов
/ 09 января 2012

У меня есть форма (табличное представление), которая содержит текстовые поля и текстовое представление в качестве подпредставлений, мне нужно сохранить данные, заполненные в этих полях. Поэтому я использовал sqlite3.Все все работает отлично, сохраняя получение и отображение сохраненных данных. Но в таблице у меня есть одна ячейка, которая содержит кнопку в качестве подпредставления. Как мы знаем, в iphone нет понятия, называемого кнопкой-флажком. Поэтому я использовал кнопку и добавил изображение по умолчанию в качестве подпредставления, показанного ниже:

enter image description here

Когда кнопка не выбрана, изображение не изменяется.

Теперь, когда пользователь выбирает кнопку, изображение меняется на галочку, указывающую, что логика работает каждый год, как показано ниже:

enter image description here

Теперь мой вопрос: как сохранить изображение кнопки в sqlite3.Я использовал следующий запрос для вставки значений:

NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO reminders(name,event,date,tim,bfr,num,bod,grp) VALUES (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\",\"%@\", \"%@\", \"%@\")", fieldOne.text, fieldTwo.text,fieldThree.text,fieldFour.text,fieldFive.text,fieldSix.text,textView.text,fieldSeven.text];

Точно так же, как я могу сохранить кнопку с изображением как подпредставление в sqlite3.Я слышал, что в sqlite3.I нет такого понятия, как хранение значений BOOL. Вместо этого он хранится как значения типа int, то есть «0» как ложь и «1» как истина . Поэтому я использовал следующий запрос для вставки изображения кнопки:

int selValue;

if(checkboxSelected == NO)
{
    selValue = 0;
}

else if(checkboxSelected == YES)
{
    selValue = 1;
}
NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO reminders(name,event,date,tim,bfr,val,num,bod,grp) VALUES (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\",\"%@\", \"%@\", \"%@\")", fieldOne.text, fieldTwo.text,fieldThree.text,fieldFour.text,fieldFive.text,isSelected,fieldSix.text,textView.text,fieldSeven.text]; 

В консоли значение selValue отображается как 1, если кнопка нажата, и 0, если нет.

Но у меня есть страница контроллера, которая называется просмотр, редактирование напоминаний, где пользователь может просматривать сохраненное напоминание и редактировать изменения. Теперь я сохранил напоминание под названием Amma, там при сохранении я выбрал кнопку «Каждый год», но ее не работает, даже если вставленные данные возвращаются для напоминания, как показано ниже:

enter image description here

EDIT:

Код, который я реализовал для извлечения данных из таблицы базы данных sqlite3:

ReminderClass *remind = [[ReminderClass alloc]init];
                remind.Name = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 1)];
                remind.Event = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 2)];
                remind.Date = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 3)];

                remind.time = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 4)]; 
                remind.numDays = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 5)];
                remind.selString = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 6)]];
                remind.number = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 7)];
                remind.msgBody = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 8)];
                remind.remGroup = [[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 9)];

EDIT:

Вот что я сделал для редактирования контента:

-(void)tableView:(UITableView *)atableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    if (aTable.editing) 
    {
        ReminderClass *rem = (ReminderClass *)[self.monthArray objectAtIndex:indexPath.section];

        // Instantiate your detail/editor view controller,
        // and pass in the ReminderClass object to be edited.
        ERAddReminderViewController *rdvc = [[[ERAddReminderViewController alloc]initWithReminder:rem]autorelease];
        [self.navigationController pushViewController:rdvc animated:YES];
    }

    [atableView deselectRowAtIndexPath:indexPath animated:YES];
}

Пожалуйста, помогите мне с вашими ценными предложениями

Спасибо всем заранее:)

Ответы [ 2 ]

1 голос
/ 09 января 2012

установка:

int selValue;

if(checkboxSelected == NO)
{
    selValue = 0;
}

else if(checkboxSelected == YES)
{
    selValue = 1;
}


       NSNumber *number = [NSNumber numberWithInt:selValue]; 
    NSString *isSelected = [number stringValue];


 NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO reminders(name,event,date,tim,bfr,val,num,bod,grp) VALUES (\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\",\"%@\", \"%@\", \"%@\")", fieldOne.text, fieldTwo.text,fieldThree.text,fieldFour.text,fieldFive.text,isSelected,fieldSix.text,textView.text,fieldSeven.text];

Получить:

 remind.selString = [[[NSString alloc]initWithUTF8String:(const char *)sqlite3_column_text(statment, 6)];

 NSString *one = remind.selString;
     NSNumber* i = [NSNumber numberWithInt:[one intValue]];;
     BOOL isOn = [i boolValue];

if(isOn){
   //set ON Image
}
else{
   //set OFF image
}
1 голос
/ 09 января 2012

если вы получите remind.selString, сохраните его в

NSString *str = [NSString stringWithFormat:@"%@", remind.selString];

и затем проверьте свой статус с помощью

if([str isEqualToString:@"0"]){
// put your code here to set your images 
}
else{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...