0

我是使用 SQLite 在 Xcode 上进行数据库开发的新手,并尝试构建一个从表中获取数据并将其放入 Tableview 的应用程序。

我在 Tableview 中有以下代码:

-(UITableViewCell *) tableView : (UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
jobs =[[NSMutableArray alloc] init];
id cellvalue;

NSString *querySQL = [NSString stringWithFormat: @"select jobTitle FROM job"];
sqlite3_stmt *statement;
const char *query_stmt = [querySQL UTF8String];
static NSString *identifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:identifier];


if (cell == nil)
{
    cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

if (sqlite3_prepare_v2(db, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
    while (sqlite3_step(statement) == SQLITE_ROW)
    {
        //[jobs addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
        [jobs addObject:[NSString stringWithFormat:@"%s",sqlite3_column_text(statement, 0)]];
        cellvalue =[jobs objectAtIndex:indexPath.row];
        cell.textLabel.text = cellvalue;
       // cell.textLabel.text = [jobs objectAtIndex:[indexPath row]]; -- Tried this but does not work.

    }
}
return cell;
}

这里的 JobTitle 是 SQLITE DB 中的一个文本字段。表名是 Job。我在以下步骤中收到 SIGBART 错误:

cellvalue =[jobs objectAtIndex:indexPath.row];
cell.textLabel.text = cellvalue;

或者我尝试过关注

cell.textLabel.text = [jobs objectAtIndex:[indexPath row]]; 

当我尝试时:

cell.textlabel.text = @"Test"

它工作正常。

我被困在这里,希望获得有关如何将文本值从数据库分配给 TableView 单元格的帮助。目前表中有 2 行。

4

2 回答 2

0

也许,因为您的 cellvalue 具有类型 id,并尝试将 id 设置为 NSString

cell.textLabel.text = 单元格值;

如果你能提供错误描述会更好

于 2013-09-24T07:38:06.337 回答
0

您的问题不在于为表格单元格分配值,而在于作业数组。可能它的值少于表中的行数。首先检查一下。

于 2013-09-24T07:45:21.980 回答