2011-04-07 5 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_textconst unsigned char *을 반환하고이 변수를 char * 변수에 할당합니다. 이것은 const 한정자를 잃어 버리기 때문에 컴파일러는 그 사실을 경고합니다.

+0

내가 앱 충돌 "부호의에서 차이가 초기화에 포인터 목표"다음과 같은 오류가 CONST 문자를 추가합니다. 또한 디버그는 데이터베이스 항목을 더 오래 선택한다는 것을 보여줍니다. 어떤 도움. @ Anomie – wayne

+0

@wayne :'const char *'는 부호있는 문자 (즉, -128에서 127까지의 값을 가지고있는)에 대한 포인터이기 때문에 그 경고이다. 반면'const unsigned char *'는 부호없는 문자에 대한 포인터이다. 0에서 255까지의 값 보유). – Anomie

+0

어떻게하면이 문제를 해결할 수 있을지 잘 알고 있습니다. – wayne

1

이 또한 작동합니다

char* foo = (char *)sqlite3_column_text(statement, 1); 
NSString* Foo = (foo) ? [NSString stringWithUTF8String:foo] : @""; 
관련 문제