2014-10-13 3 views
1

sqlite3_step 문이 101을 반환하지만 실행할 수있는 코드 블록이 있지만 블록 내에있는 코드는 건너 뜁니다. 왜 이럴 수 있니?Xcode : sqlite3_step이 101을 반환하지만 블록 내에서 코드를 실행하지 않습니다.

sqlite3_stmt *statement; 
if (sqlite3_open([dbPathString UTF8String], &database) == SQLITE_OK) { 
    NSLog(@"Value: %li",(long)sender.tag); 
    NSString *delete_feed = [NSString stringWithFormat:@"DELETE FROM user_data WHERE id = %li", (long)sender.tag]; 
    if (sqlite3_prepare_v2(database, [delete_feed UTF8String], -1, &statement, NULL) == SQLITE_OK) { 
     NSLog(@"%d", sqlite3_step(statement)); 
     if (sqlite3_step(statement) == SQLITE_DONE) { <== MY ISSUE 
      NSLog(@"Got here"); <== NEVER GETS HERE 
      for (UIView *subview in [self.view subviews]) { 
       if (subview.tag == 2) { 
        [subview removeFromSuperview]; 
        [self createListPage]; 
       } 
      } 
      sqlite3_finalize(statement); 
      sqlite3_close(database); 
     } 
    } 
} 
+0

뭔가를 시도 할 수 있습니까? '101'은'SQLITE_DONE'입니다. – rmaddy

+0

똑같은'_step' 명령에 대한 바로 앞의 NSLog는 무엇을 말합니까? – Nick

+0

rmaddy와 Nick, NSLog에서 출력 할 때 값은 101을 반환합니다. – pingeyeg

답변

2

sqlite3_step을 두 번 호출합니다. 처음으로 SQLite_DONE (101),하지만 두 번째 시간 (블록을 ​​입력 할 때) 생각할 것이라고, 다른 오류 코드를 반환하고 있습니다.

는`sqlite3_step`가`101`을 반환 (의사 코드) 당신이 알고 어떻게

int ret_code = sqlite3_step(statement); 
    NSLog(@"ret_code=[%d]", ret_code); 
    if(ret_code == SQLITE_DONE) { 
     // do some stuff here... 
    } 
+0

코드가 반환하는 내용을 알기 위해이 작업을 수행하고 있습니다. 그 스 니펫을 제거하면 똑같은 일이 일어납니다. – pingeyeg

+0

그게 이상하지 않니? 솔루션을 시험해 본 결과, 코드 블록이 작동했습니다. 비슷한 다른 작업을하는 다른 블록이 제대로 작동하는 이유가 궁금합니다.하지만이 블록은 작동하지 않습니다. 어쨌든, 나는 배웠습니다. 감사 – pingeyeg

관련 문제