2011-04-07 87 views
1

我是編程新手,我正在學習將sqlite數據庫中的數據加載到表(名稱)的教程,然後在選擇時加載顯示更多數據(地址等)的詳細視圖。將sqlite數據加載到詳細視圖中。數據不會改變。幫助

我的問題是,當我第一次加載詳細視圖中的數據它工作正常,但是當我嘗試再次加載數據上的另一個表項(名稱)詳細視圖加載第一批數據,並沒有直到我重新啓動模擬器。即

第一選擇: 表「名稱1」推送詳細視圖「地址1」工作正常。

第二選擇: 表「名稱2」推送詳細視圖「地址1」數據不會更改。

這是我的代碼;如果(isDetailViewHydrated)return;(void)水合物詳細視圖數據{is_DetailViewHydrated} return;

if (detailStmt == nil) { 
    const char *sql = "Select ClubAddress from clubNames Where clubID = ?"; 
    if (sqlite3_prepare_v2(database, sql, -1, &detailStmt, NULL) !=SQLITE_OK) 
     NSAssert1(0, @"Error while creating detail view statment. '%s'", sqlite3_errmsg(database)); 
    } 
sqlite3_bind_int(detailStmt, 1, clubID); 

if (SQLITE_DONE != sqlite3_step(detailStmt)) { 
    const char *db_text = sqlite3_column_text(detailStmt, 0); 
    NSString *address = [NSString stringWithUTF8String: db_text]; 
    self.ClubAddress = address; 
} 
else 
    NSAssert1(0, @"Error while getting the address of club. '%s'", sqlite3_errmsg(database)); 
sqlite3_reset(detailStmt); 

isDetailViewHydrated = YES; 
} 

我試過釋放變量,但當我嘗試推送詳細視圖時,我收到編譯器警告和應用程序崩潰。

任何幫助將不勝感激。 感謝

回答

0

我有一些問題:

您是否獲得從查詢正確的信息?通過直接從命令行查詢數據庫來檢查。

您是否在表格視圖中顯示數據?表視圖不會立即刷新。你應該調用[tableView reloadData]來做到這一點。檢查表格視圖編程指南,如果你有進一步的懷疑。

你可以發佈代碼片段,你推動那個崩潰的ViewControllers嗎?

如果你正在釋放對象的崩潰,你最好看一下開發者文檔中的內存管理編程指南。

+0

是的,我收到第一個查詢的正確信息。 @ Pacu – wayne 2011-04-07 04:45:52

+0

如果您推動視圖控制器,那麼您必須將reloadData調用放入 - (void)viewWillAppear:(BOOL)您的VC的動畫方法 – Pacu 2011-04-07 05:07:23

+0

你怎麼寫[tableView reloadData]請@ Pacu – wayne 2011-04-07 05:15:37

0

從您的代碼中,您將isDetailViewHydrated設置爲YES,但您是否曾將其設置爲「否」?

+0

我剛試過,它沒有改變任何東西@ ragamufin – wayne 2011-04-07 05:26:06

+0

感謝您的輸入。@ ragamufin – wayne 2011-04-07 05:32:41

相關問題