2011-04-27 89 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)