2011-04-07 28 views
1

我想從詳細視圖中的sqlite數據庫加載文本,我得到這個錯誤。這是什麼意思?初始化丟棄指針目標類型的限定符

初始化放棄指針目標類型的限定符。

這是什麼意思?我該如何解決這個問題。請幫助。這是我的代碼。

-(void) hydrateDetailViewData { 
     if (isDetailViewHydrated) 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)) { 
       char *db_text = sqlite3_column_text(detailStmt, 2); //error showing here 
       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; 
} 

謝謝。

回答

3

sqlite3_column_text被聲明爲返回const unsigned char *,並將其分配給類型爲char *的變量。這會丟失const限定符,因此編譯器會警告您這一事實。

+0

當我添加爲const char我得到以下錯誤「指針目標在初始化符號不一致」和應用程序崩潰。調試也表明,它現在更長的時間拿起數據庫項目。任何幫助。@ Anomie – wayne 2011-04-07 02:59:09

+0

@wayne:這個警告是因爲'const char *'是一個指向有符號字符的指針(即保存從-128到127的值),而'const unsigned char *'是一個指向無符號字符的指針(即保持從0到255的值)。 – Anomie 2011-04-07 03:08:20

+0

任何想法如何解決這個將不勝感激。 – wayne 2011-04-07 03:12:01

1

這也將工作:

char* foo = (char *)sqlite3_column_text(statement, 1); 
NSString* Foo = (foo) ? [NSString stringWithUTF8String:foo] : @""; 
相關問題