sqlite 3でターミナルを使用して 'Mydatabase.db'という名前のデータベースを作成し、3つのカラム(name、email、food)を持つ 'entries'という名前のテーブルを作成しました。 私は私がのNSLog出力を使用して、データベースファイルのパスをチェックし、上記関数でsqliteデータベースからテーブルビューにデータをロードする
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.Peoples=[[NSMutableArray alloc]init ];
self.databaseName = @"MyDatabase.db";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDir=[documentPaths objectAtIndex:0];
self.databasePath=[documentDir stringByAppendingString:self.databaseName];
[self CheckAndCreateDatabase];
[self readDataFromDatabase];
return YES;
}
ファイルAppDelegate.mにデータベースとの接続のためのこのコードを使用する空の文字列です。 は、私は、データをフェッチするために、これらの機能を使用 -
(void)CheckAndCreateDatabase
{
bool success;
NSFileManager *fileManger=[NSFileManager defaultManager];
success=[fileManger fileExistsAtPath:self.databasePath];
if (success)
return;
NSString *databasePathFromApp=[[[NSBundle mainBundle]resourcePath] stringByAppendingPathComponent:self.databaseName];
[fileManger copyItemAtPath:databasePathFromApp toPath:self.databasePath error:nil];
}
-(void) readDataFromDatabase{
[self.Peoples removeAllObjects ];
sqlite3 *database;
if(sqlite3_open([self.databasePath UTF8String], & database) ==SQLITE_OK)
{
char *sqlStatement="select * from entries";
sqlite3_stmt *compiledStatement;
if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement,NULL)==SQLITE_OK) {
while (sqlite3_step(compiledStatement)==SQLITE_ROW) {
char *n=sqlite3_column_text(compiledStatement, 1);
char *e=sqlite3_column_text(compiledStatement, 2);
char *f=sqlite3_column_text(compiledStatement, 3);
NSString *name=[NSString stringWithUTF8String:n];
NSString *email=[NSString stringWithUTF8String:e];
NSString *food=[NSString stringWithUTF8String:f];
NSLog(@"Name= %@",name);
Data *data =[[Data alloc] initWithData:name theEmail:email TheFood:food];
[self.Peoples addObject:data];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
次にTableViewController.miに、私はテーブルビューにデータを表示することができますどのように
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *cellIdentifier = @"Cell";
SiteCell *cell=(SiteCell*)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell=nil) {
cell=[[SiteCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier ];
}
NSInteger row=indexPath.row;
Data *d=[mainDelegate.Peoples objectAtIndex:row];
cell.primaryLabal.text=d.name;
cell.secondaryLabal.text=d.email;
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
「データ」オブジェクトを使用して取得したデータを表示していますデータベースから?私はtableviewの理由でデータベースの接続が確立されていないことが表示されていませんか?私はそれを修正し、希望の出力を取得しますか?このリンクからサンプルコードをダウンロードできますか?https://drive.google.com/file/d/0B5pNDpbvZ8SnQkFySHkwZm9nR1k/view?usp=sharing
最新のデータをリフレッシュする必要があります。この行の後に 'reload data'を使用してください。 –