【发布时间】:2012-04-10 21:08:31
【问题描述】:
我遇到以下加载 SQLite 数据库的代码的问题。
- (NSArray *)getDatabase {
NSLog(@"Get Database Called");
NSMutableArray *retval = [[[NSMutableArray alloc] init] autorelease];
NSString *query = @"SELECT Description, UniqueID, HexCoords, NoHexCoords, NoAnnots, AnnotText, DescriptionFormatting, HexCoordsPortrait FROM MainTable";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil)
== SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *nameChars = (char *) sqlite3_column_text(statement, 0);
char *desChars = (char *) sqlite3_column_text(statement, 1);
int uniqueID = sqlite3_column_int(statement, 2);
通过使用断点,我可以看出问题在于 if 语句,并且代码永远不会超过这个 if 语句。谁能发现可能出了什么问题?代码几个月前就可以工作了,我最近升级到 xCode 4.3,所以这可能是问题吗?
提前致谢。
【问题讨论】:
-
我能看到这样做的唯一原因是 _database 设置不正确。打开数据库的调用是否可能失败?此外,最后一个参数应该是
NULL,而不是nil,因为该参数不是指向对象的指针。目前两者都编译为 0,因此不会引起问题,但我不知道有任何保证它们将保持相同。
标签: iphone sql database xcode sqlite