Ошибка в UITabel, подключенном к SQlite3 - PullRequest
0 голосов
/ 24 января 2012

Я подключил Sqlite3 к своему проекту в UITableview, и код прошел нормально. Но когда я открываю таблицу в симуляторе вместо данных, она показывает что-то вроде <db: 0x8a35e20>. Кто-нибудь может дать мне знать, что пошло не так!

Пожалуйста, найдите мой код таблицы ниже:

#import "table1.h"
#import "db.h"

@implementation table1
@synthesize tableOne;

#pragma mark - View lifecycle
- (void)viewDidLoad
{

    databaseName=@"nobel10.db";

    NSArray *documentPaths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString * documentDir = [documentPaths objectAtIndex:0];
    databasePath=[documentDir stringByAppendingPathComponent:databaseName];
    [self checkAndCreateDatabase];
    [self readDataFromDatabase];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}


#pragma mark - TableView Data Source methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [tableOne count]; }

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell= nil;
    cell = [tableView dequeueReusableCellWithIdentifier:@"mycell"];
    if (cell == nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mycell"];}
    cell.textLabel.text =[NSString stringWithFormat:@"%@" ,[tableOne objectAtIndex:indexPath.row]];
    return  cell;}
-(void)checkAndCreateDatabase{
    BOOL success;
    NSFileManager *fileManager=[NSFileManager defaultManager];
    success=[fileManager fileExistsAtPath:databasePath];
    if(success)
        return;

    NSString *databasePathFromApp = [[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:databaseName];
    [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
    [fileManager release];
}
-(void)readDataFromDatabase{
    sqlite3 *database;
    tableOne=[[NSMutableArray alloc]init];
    if(sqlite3_open([databasePath UTF8String], &database)== SQLITE_OK){
    const char *sqlStatement = "SELECT * FROM gender";
        sqlite3_stmt *compiledStatement;
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)==SQLITE_OK){
            while (sqlite3_step(compiledStatement)==SQLITE_ROW) {
                NSString *stringName=[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

                db *info =[[db alloc]initWithName:stringName];
                [tableOne addObject:info];
                [info release];
            }

        }
         sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database);
}
- (void)dealloc
{

    [tableOne release];
    [super dealloc];
}

@end

1 Ответ

0 голосов
/ 24 января 2012

Вы непосредственно устанавливаете объект db для метки табличного представления. Вам может потребоваться установить значение переменных экземпляра объекта db для метки следующим образом

cell.textLabel.text =[NSString stringWithFormat:@"%@" ,[(db*)[tableOne objectAtIndex:indexPath.row]name]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...