如果 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);
}
}
}
最佳答案
您正在调用 sqlite3_step 两次。我认为第一次是 SQLITE_DONE (101),但第二次(当你进入你的 block 时),它返回了一些其他错误代码。
可以尝试类似(伪代码)
int ret_code = sqlite3_step(statement);
NSLog(@"ret_code=[%d]", ret_code);
if(ret_code == SQLITE_DONE) {
// do some stuff here...
}
关于ios - Xcode : sqlite3_step returning 101, 但不在 block 内执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344349/