UITableView没有填充sqlite数据库列

时间:2012-06-10 10:35:28

标签: iphone objective-c uitableview ios5 xcode4.3

这里是我用来在sqlite数据库中用列的内容填充UITableView的方法的代码。但是,这在运行时没有出错,但仍然没有在UITableView中提供任何数据。如果有人可以提供帮助,我们将非常感激。

- (void)viewDidLoad{
    [super viewDidLoad];
    self.title = @"Strings List";
    UITableViewCell *cell;
    NSString *docsDir;
    NSArray *dirPaths;
    sqlite3_stmt *statement;
    // Get the documents directory
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    docsDir = [dirPaths objectAtIndex:0];

    // Build the path to the database file
    databasePath = [[NSString alloc]initWithString: [docsDir stringByAppendingPathComponent:@"strings.sqlite"]];

    NSFileManager *filemgr = [NSFileManager defaultManager];

    if ([filemgr fileExistsAtPath: databasePath ] == NO) 
    {
        const char *dbpath = [databasePath UTF8String];
        if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
        {
        NSString * query =
            @"SELECT string FROM strings";
            const char * stmt = [query UTF8String];
            if (sqlite3_prepare_v2(contactDB, stmt, -1,&statement, NULL)==SQLITE_OK){
                if (sqlite3_step(statement) == SQLITE_ROW)
                {
    NSString *string = [[NSString alloc]initWithUTF8String:(const char*)sqlite3_column_text(statement, 0)];
                    cell.textLabel.text = string;                }
            }
            else NSLog(@"Failed");
            sqlite3_finalize(statement);
       }
       sqlite3_close(contactDB);
    }

}

4 个答案:

答案 0 :(得分:0)

我建议您仔细阅读Table View Programming Guide

您放入viewDidLoad的大多数序列通常都放在

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

答案 1 :(得分:0)

你正在使用非常复杂的方法,当你拥有表视图的所有委托方法时,就像把黄油放在面包上一样。

Link

尝试我的答案

让我知道它是否有效!!!!
干杯

答案 2 :(得分:0)

如果您使用模拟器进行测试,请再次删除以前的版本并安装应用程序。它从文档目录中获取SQL文件。所以请试试这个让我知道。感谢

答案 3 :(得分:0)

您是否检查过tableview或数据库是否存在问题? 您是否能够从数据库中获取数据?检查是否缺少任何在代码中连接sqlite的方法。