我是编程的新手,我正在按照一个教程将sqlite数据库中的数据加载到表(名称)中,然后在选择时加载显示更多数据的详细视图(地址等)。
我的问题是,当我第一次在详细视图中加载数据时它工作正常但是当我尝试再次在另一个表项(名称)上加载数据时,详细视图会加载第一批数据并且不会更改直到我重新启动模拟器。即。
首选: 表“名称1”推送详细视图“地址1”工作正常。
第二选择: 表“名称2”按详细视图“地址1”数据不会改变。
这是我的代码;
- (void)hydrateDetailViewData { if(isDetailViewHydrated)返回;
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 :(得分:0)
我有一些问题:
您是否从查询中获得了正确的信息?通过直接从命令行查询数据库来检查它。
您是否在表格视图中展示数据?表视图不会立即刷新。你应该调用[tableView reloadData]这样做。如果您对此有进一步的疑问,请查看表视图编程指南。
您可以将代码片段发布到推送崩溃的ViewControllers吗?
如果您因发布对象而崩溃,最好先查看开发人员文档中的内存管理编程指南。
答案 1 :(得分:0)
从您的代码中,您将isDetailViewHydrated设置为YES,但是您是否曾将其设置为no?