Continuando o tutorial Salvando informações no Banco de Dados nesse post iremos aprender a recuperar as informações salvas no BD e exibi-las em uma Table View.

Vamos colocar a mão na massa e primeiro vamos adicionar a TableView a StoryBoard e na seqüência linka-la ao código.

No arquivo Storyboard adicione uma TableView a nossa primeira ViewController, é a primeira tela a ser exibida ao usuário, conforme podemos observar na imagem a seguir, não irei detalhar os passos pois são operações básicas já ensinadas anteriormente:
Captura de Tela 2014-07-09 às 13.32.22

Feito isso, no arquivo ViewController.h iremos adicionar o Delegate responsável em controlar a tableView e a DataSource responsável em popular a tableView com informações. Conforme mostrado no código a seguir:

[sourcecode language=”objc” wraplines=”false” collapse=”false”]
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *TableView;

@end
[/sourcecode]

Agora no ViewController.m iremos criar um NSMutableArray global, que será o responsável em armazenar os objetos recuperados do banco.

A Seguir, declaramos a funçao a baixo que realiza a comunicação do banco com o código:

[sourcecode language=”objc” wraplines=”false” collapse=”false”]
– (NSManagedObjectContext *)managedObjectContext
{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
[/sourcecode]

Por fim, precisamos que toda vez que essa tela for exibida uma nova verificação no banco seja feita e a tabela seja atualizada:

 

[sourcecode language=”objc” wraplines=”false” collapse=”false”]
– (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];

// Fetch the devices from persistent data store
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Entity"];
carros = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

[self.TableView reloadData];
}
[/sourcecode]

**ATENÇÃO**

O Nome definido na função initWithEntityName deverá ser o mesmo definido no seu modelo, no arquivo CoreData.xcdatamodeld que no nosso caso será Entity

Agora que já temos a comunicação do código com o Banco de Dados, precisamos utilizar as funções disponíveis no Delegate e no DataSource para exibir as informações na tabela.

[sourcecode language=”objc” wraplines=”false” collapse=”false”]
#pragma mark – TableView
– (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

– (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [carros count];
}

– (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if (cell == nil) {
cell = [[UITableViewCell alloc] init];
}
// Configure the cell…
NSManagedObject *device = [carros objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@", [device valueForKey:@"carro"]]];

return cell;
}
[/sourcecode]

** ATENÇÃO **
Para que o aplicativo seja executado com sucesso você deverá:
– Linkar o Delegate e o DataSource a Storyboard (já fizemos coisas semelhantes em aulas passadas)
– Criar uma UITableViewCell dentro da UITableView e definir o seu identificador como Cell conforme indicado a seguir:
Captura de Tela 2014-07-09 às 15.53.25

Por fim, o resultado da Tabela, após inserirmos 3 Carros será:
Untitled
Como sugestão de atividade, sugiro que o código seja alterado para realizar o seguinte comportamento:

Assim que a pessoa adicionar um novo item no banco, o aplicativo volte automaticamente para a página anterior e exiba a tabela já atualizada… Fácil, né?

Caso tenha dúvidas, segue o link para download do projeto completo!

Estou disponibilizando para download o código de um programa que toca uma música mp3 que esteja disponível dentro do projeto. Ele será fundamental para a realização do trabalho!

2 thoughts on “Tutorial iOS –Recuperando informações do Banco de Dados com uso do CoreData

  1. Cara, quero agradecer pelos tutoriais do site para a plataforma iOS, pois é um mercado crescente no Brasil, entretanto não possui muitos desenvolvedores, como o Android por exemplo. Enfim agradeço pelos tutoriais e estarei sempre de olho no site.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

*
*
Website