2011-04-27 90 views
0

嗨我的问题在加载UITableView使用SQLite。我有这个代码!问题加载UITableView

数据库的结构:

modelID integer PK autoincrement 
model varchar 
avaliable int 
image1 blob 
image2 blob 
image3 blob 

.H

#import <UIKit/UIKit.h> 
@interface DBModel : NSObject { 
    NSNumber *modelID; 
     NSString *model; 
    NSNumber *avaliable; 
} 

@property (nonatomic, retain) NSNumbe *modelID; 
@property (nonatomic, retain) NSString *model; 
@property (nonatomic, retain) NSNumbe *avaliable; 

-(id)initWithName:(NSString *)n modelID:(NSInteger *)mid avaliable:(NSNumber *)aval; 

@end 

.M

#import "DBModel.h" 

@implementation DBModel 
@synthesize modelID, model, avaliable; 

-(id)initWithName:(NSString *)n modelID:(NSInteger *)mid avaliable:(NSInteger *)aval { 
    self.name = n; 
    self.modelID= mid; 
    self.avaliable= aval ; 
    return self; 
} 
@end 

的AppDelegate我有这样的功能:

-(void) readModeDatabase { 

    sqlite3 *database; 
    aryModel = [[NSMutableArray alloc] init]; 
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
      const char *sqlStatement = "select * from models"; 

      sqlite3_stmt *compiledStatement; 
      if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 

       while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 

        NSInteger *aModelID = sqlite3_column_int(compiledStatement, 1); 

NSString *aModel = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];      NSInteger *aAvaliable = sqlite3_column_int(compiledStatement, 3); 
           //Here I need load on image in my DBModel. 

        // Create a new animal object with the data from the database 
        DBModel *model = [[DBModel alloc] initWithName:aMode modelID:aModelID avaliable:aAvaliable]; 

        [aryModel addObject:model]; 

        [model release]; 
       } 
      } 
      sqlite3_finalize(compiledStatement); 

    } 
    sqlite3_close(database); 
} 

事件的cellForRowAtIndexPath

// Set up the cell 
DBModelAppDelegate *appDelegate = (DBModelAppDelegate *)[[UIApplication sharedApplication] delegate]; 
DBModel *models = (DBModel *)[appDelegate.aryModel objectAtIndex:indexPath.row]; 
cell.textLabel.text = models.model; 
cell.detailTextLabel.text = [models.avaliable stringValue]; 

return cell; 

我的问题是:

我有时间问题,从数据库中值NSInteger的发挥带来一个整数值,他们总是带来零和数据库有是列的值。

当我尝试上传一个使用Subtitle风格的UITableView并播放从数据库中获得的myvariable的值时,它不会添加任何内容,也不会添加任何格式,从而带来正常的效果。

我想做到以下几点:

根据上述我的数据库结构,我填写了详细的UITableView,与图像,标题和标题(如果可能的话根据图片标题或星价值)是所有需要完成的工作,并通过点击通话详细信息完成在线。

感谢

回答

0

我相信你在readModeDatabase功能有问题。从列的数据库引用中读取记录从0开始(奇怪的比较是从1开始的存储/更新),上面的行从数据库中读取1,实际上是在读取第二列而不是第一列。所以从数据库读取modelID你的数据库结构应该像

NSInteger aModelID = sqlite3_column_int(compiledStatement, 0); 

阅读它进一步这一NSInteger的只是同义词长整型和NSNumber的是客观的C类。所以NSInteger不应该有指针(NSInteger *)。欲了解更多详情,请访问http://iosdevelopertips.com/cocoa/nsnumber-and-nsinteger.html

并且还根据需要在课堂和其他地方的所有地方进行校正。

(NSInteger *) to (NSInteger)