这里是我用来在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);
}
}
答案 0 :(得分:0)
我建议您仔细阅读Table View Programming Guide。
您放入viewDidLoad
的大多数序列通常都放在
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath;
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您使用模拟器进行测试,请再次删除以前的版本并安装应用程序。它从文档目录中获取SQL文件。所以请试试这个让我知道。感谢
答案 3 :(得分:0)
您是否检查过tableview或数据库是否存在问题? 您是否能够从数据库中获取数据?检查是否缺少任何在代码中连接sqlite的方法。