2012-01-09 160 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