ios - how to display data from sqlite in UITableView in Storyboard -


i create 1 application. in application store 2 array in sqlite table database can't display sqlite in uitableview. searching in google not found display data in storyboard sqlite.!!! please guide me how display data sqlite db in tableview. code :

#import "viewcontroller.h" #define dataname @"db.sqlite"  @implementation viewcontroller {     nsdictionary * dictionary; } - (void)viewdidload {     [super viewdidload];     nsarray *name = [nsarray arraywithobjects:@"ribery",@"ronaldo",@"messi",@"zannati",@"totti", nil];     nsarray *team = [nsarray arraywithobjects:@"byern",@"r.madrid",@"barcelona",@"inter",@"rome", nil];     (int = 0; < [name count]; i++)     {         nsstring * name = [name objectatindex:i];         nsstring * team = [team objectatindex:i];         dictionary = [nsdictionary dictionarywithobjectsandkeys:name,@"name",team,@"team",nil];         nsstring *query = [nsstring stringwithformat:@"insert tablefootball (name,team) values('%@','%@')",[dictionary objectforkey:@"name"],[dictionary objectforkey:@"team"]];         [self executequery:query];     }  } -(nsstring *) datafilepath {     nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);     nsstring *documentsdirectory = [paths objectatindex:0];     nslog(@"path %@",[documentsdirectory stringbyappendingpathcomponent:dataname]);     return [documentsdirectory stringbyappendingpathcomponent:dataname]; } -(void)executequery:(nsstring *)query {     //nslog(@"query : %@",query);      sqlite3_stmt *statement;     if(sqlite3_open([[self datafilepath] utf8string], &database) == sqlite_ok)     {         if (sqlite3_prepare_v2(database, [query utf8string], -1, &statement, null) == sqlite_ok)         {             if (sqlite3_step(statement) != sqlite_done)             {                 sqlite3_finalize(statement);             }         }         else         {             nslog(@"query statement not compiled");         }          sqlite3_finalize(statement);         sqlite3_close(database);     }     else     {         nslog(@"data not opened");     } } #pragma mark - table view data source - (nsinteger)numberofsectionsintableview:(uitableview *)tableview {     // return number of sections.     return 1; } - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section {     // return number of rows in section.     return 1; } - (uitableviewcell*)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath {     static nsstring *cellidentifier = @"cell";     uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellidentifier];      if (cell == nil) {         cell = [[uitableviewcell alloc] initwithstyle:uitableviewcellstyledefault reuseidentifier:cellidentifier];     }     //i dont know put here display sqlite     return cell; } 

create method fetch players stored in sqlite findallplayers . create datasourcearray hold players returned previous method. easy form model custom objects instead of dictionary ease of use.

//player.h  @interface player : nsobject  @property (nonatomic) nsuinteger playerid; @property (nonatomic, copy) nsstring *name; @property (nonatomic, copy) nsstring *team; 

a utility playerdatabase inserts , fetches player instances sqlite.

//playerdatabase.h  @class player; @interface playersdatabase : nsobject  + (playersdatabase*)database; - (nsarray *)findallplayers; - (bool)insertplayer:(player *)player;  //playerdatabase.m @implementation playersdatabase  static playersdatabase *_database;  + (playersdatabase*)database {     if (_database == nil) {         _database = [[playersdatabase alloc] init];     }     return _database; }  - (id)init {     if ((self = [super init])) {          nsfilemanager *filemanager = [nsfilemanager defaultmanager];         nsstring *filepath = [self databasepath];         if (![filemanager fileexistsatpath:filepath]) {             nsstring *sqlitedb = [[nsbundle mainbundle] pathforresource:@"players"                                                                  oftype:@"db"];             [filemanager copyitematpath:sqlitedb                                  topath:filepath                                   error:null];         }      }     return self; }  - (nsstring *)databasepath {     nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes);     nsstring *documentsdirectory = paths[0];     return [documentsdirectory stringbyappendingpathcomponent:@"players.db"]; }  - (nsarray *)findallplayers {     nsmutablearray *players = [nsmutablearray array];     fmdatabase *database = [fmdatabase databasewithpath:[self databasepath]];     [database open];      fmresultset *resultset = [database executequery:@"select * player order name"];      while ([resultset next]) {          player *player = [[player alloc]init];          player.playerid = [resultset intforcolumn:@"playerid"];         player.name     = [resultset stringforcolumn:@"name"];         player.team     = [resultset stringforcolumn:@"team"];          [players addobject:player];      }      [database close];      return players; }  - (bool)insertplayer:(player *)player {      fmdatabase *db = [fmdatabase databasewithpath:[self databasepath]];      [db open];      bool success =  [db executeupdate:@"insert player (name,team) values (?,?);",player.name,player.team, nil];      [db close];      return success; } 

now in viewcontroller tableview, first populate sqlite , reload tableview

//yourviewcontroller.h  - (void)viewdidload {     [super viewdidload];     nsarray *names = [nsarray arraywithobjects:@"ribery",@"ronaldo",@"messi",@"zannati",@"totti", nil];     nsarray *teams = [nsarray arraywithobjects:@"byern",@"r.madrid",@"barcelona",@"inter",@"rome", nil];     (int = 0; < [name count]; i++)     {         player *player = [[player alloc]init];          player.name = names[i];         player.team = teams[i];          [[playerdatabase database] insertplayer:player];     }      self.players = [self findallplayers];     [self.tableview reloaddata];  }  #pragma mark - table view data source - (nsinteger)numberofsectionsintableview:(uitableview *)tableview {     // return number of sections.     return 1; } - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section {     // return number of rows in section.     return [self.players count]; } - (uitableviewcell*)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath {     static nsstring *cellidentifier = @"cell";     uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellidentifier];      if (cell == nil) {         cell = [[uitableviewcell alloc] initwithstyle:uitableviewcellstylesubtitle reuseidentifier:cellidentifier];     }     //here datasource array of dictionary objects     player *player = self.players[indexpath.row];     cell.textlabel.text = player.name;     cell.detailtextlabel.text = player.team;      return cell; } 

i have worked out sample project following above mentioned tutorial, data preloaded sqlite. might need tweak use.

source code


Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -