SIGBART从SQLITE向UITableView分配值时出错

时间:2013-09-24 07:30:38

标签: ios sqlite uitableview sigabrt

我是使用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行。

2 个答案:

答案 0 :(得分:0)

也许,因为您的单元格值具有类型ID,并尝试在

中将id设置为NSString

cell.textLabel.text = cellvalue;

如果您能提供错误说明

会更好

答案 1 :(得分:0)

问题不在于为表格单元格赋值,而在于使用jobs数组。可能它的值小于表中的行数。首先检查一下。