2012-01-09 171 views
0

我有一个窗体(表视图),其中包含textfields和textview作为子视图,我需要保存数据填充在这些fields.Hence我用sqlite3.Everything工作正常,保存检索和显示保存的数据。但在表格视图中,我有一个单元格包含一个按钮作为子视图。我们知道iphone中没有复选框按钮的概念。因此,我使用按钮并添加了默认图像作为子视图如下所示:将图像存储到sqlite3数据库

enter image description here

当未选中按钮时,图像不变。

现在,如果用户选择的按钮图像更改为复选标记表明该逻辑每年工作原理如图所示如下所示:

enter image description here

现在我的问题是我怎么能保存按钮中sqlite3.I图像已经使用下面的查询中插入值:

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.I听说有像BOOL没有概念在SQL值存储ite3.Instead它被存储为INT值,即“0”作为假和“1”作为true.Hence我用下面的查询插入按钮图像:

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,否则为0。

但我有一个名为视图编辑提醒的控制器页面,用户可以在其中查看保存的提醒并编辑发生的更改。现在,我保存了一个名为Amma的提醒,在保存时我已选择了“每年”按钮,但尽管如下所示插入的提醒是越来越检索的数据其不工作:

enter image description here

编辑:

我已经用于检索从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)]; 

编辑:

这是我所做的编辑内容:

-(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]; 
} 

请帮我出您宝贵的建议

感谢所有提前:)

+0

你有保存一年选择值在你的sqllite数据库中是0还是1? – Hiren 2012-01-09 05:15:10

+0

@ hiren443是的,我已经存储了选择值 – 2012-01-09 05:19:35

+0

显示你的显示代码编辑你的剩余部分 – Hiren 2012-01-09 05:22:48

回答

1

设置检查您的状态:

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 
} 
+0

感谢您的答案,但我有疑问。什么是用于保存价值的表中使用的语法。我的意思** CREATE TABLE提醒(id INTEGER PRIMARY KEY,名称VARCHAR(64),按钮?)**,问号是我需要的,同时插入我们使用** INSERT INTO提醒((名称,事件,按钮)VALUES (\“%@ \”,\“%@ \”,?)**。是否按钮的格式也一样,需要一些说明:P在此先感谢:) – 2012-01-09 05:34:37

+0

我不清楚为什么你这样做: isEqualToString:@“YES”];你不能像其他字符串一样传递值吗? @ “1”,@ “2”?然后它可以是相同的,按钮VARCHAR(64) – 2012-01-09 05:43:16

+0

非常感谢你,但我想要的东西像@“0”|| @“1”,我的意思是检查按钮是否被选中,请在这种情况下帮我解决:) – 2012-01-09 05:47:23

1

如果你得到提醒。selString然后将其保存在

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

,然后用

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

} 
+0

是的,我已经存储了它 – 2012-01-09 05:57:29

+0

这是我必须检查编辑之前(导航到控制器)的代码,在显示整个页面之前必须先写入提示实例 – 2012-01-09 06:01:26

+0

的数据保存。就像你拿到数据后你必须做的这个功能 – Hiren 2012-01-09 06:03:04