From 0c436aa68b72f29696df7a47ad33ad1797e912b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isa=C3=ADas?= Date: Tue, 10 Mar 2015 12:04:18 -0300 Subject: [PATCH 1/4] Bronze 1 --- iTunesSearch/AppDelegate.m | 1 + iTunesSearch/Entidades/Filme.h | 4 +- iTunesSearch/TableView.xib | 2 +- iTunesSearch/TableViewCell.h | 7 ++- iTunesSearch/TableViewCell.xib | 70 +++++++++++++++++++++++------- iTunesSearch/TableViewController.m | 12 +++-- iTunesSearch/iTunesManager.m | 9 +++- 7 files changed, 81 insertions(+), 24 deletions(-) diff --git a/iTunesSearch/AppDelegate.m b/iTunesSearch/AppDelegate.m index d513fd8..55987a1 100644 --- a/iTunesSearch/AppDelegate.m +++ b/iTunesSearch/AppDelegate.m @@ -22,6 +22,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( #warning Necessário para inicializar a aplicacao sem storyboard self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index eb126dc..8881751 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -11,10 +11,10 @@ @interface Filme : NSObject @property (nonatomic, strong) NSString *nome; -@property (nonatomic, strong) NSString *trackId; @property (nonatomic, strong) NSString *artista; -@property (nonatomic, strong) NSString *duracao; +@property (nonatomic, strong) NSNumber *duracao; @property (nonatomic, strong) NSString *genero; @property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *lancamento; @end diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index 55f128c..f4a02b9 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -1,5 +1,5 @@ - + diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index b630349..1be7e99 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -11,7 +11,12 @@ @interface TableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *nome; -@property (weak, nonatomic) IBOutlet UILabel *tipo; +@property (weak, nonatomic) IBOutlet UILabel *artista; +@property (weak, nonatomic) IBOutlet UILabel *duracao; +@property (weak, nonatomic) IBOutlet UILabel *genero; +@property (weak, nonatomic) IBOutlet UILabel *pais; +@property (weak, nonatomic) IBOutlet UILabel *lancamento; + @end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index bf8bd3f..9076da3 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -7,40 +7,80 @@ - - + + - - - + + + + + + + + + - + + + + + + + + + + - + - + diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index f689980..ca381a5 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -28,7 +28,7 @@ - (void)viewDidLoad { [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; iTunesManager *itunes = [iTunesManager sharedInstance]; - midias = [itunes buscarMidias:@"Apple"]; + midias = [itunes buscarMidias:@"Band"]; #warning Necessario para que a table view tenha um espaco em relacao ao topo, pois caso contrario o texto ficara atras da barra superior self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 15.f)]; @@ -50,18 +50,22 @@ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; + TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; Filme *filme = [midias objectAtIndex:indexPath.row]; [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; + [celula.artista setText:filme.artista]; + [celula.duracao setText: [NSString stringWithFormat:@"%d min", [filme.duracao intValue]/6000]]; + [celula.genero setText:filme.genero]; + [celula.pais setText:filme.pais]; + [celula.lancamento setText:filme.lancamento]; return celula; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70; + return 200; } diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index e2babda..337726c 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -48,15 +48,22 @@ - (NSArray *)buscarMidias:(NSString *)termo { NSArray *resultados = [resultado objectForKey:@"results"]; NSMutableArray *filmes = [[NSMutableArray alloc] init]; + NSString *ano = [[NSString alloc] init]; for (NSDictionary *item in resultados) { Filme *filme = [[Filme alloc] init]; [filme setNome:[item objectForKey:@"trackName"]]; - [filme setTrackId:[item objectForKey:@"trackId"]]; [filme setArtista:[item objectForKey:@"artistName"]]; [filme setDuracao:[item objectForKey:@"trackTimeMillis"]]; [filme setGenero:[item objectForKey:@"primaryGenreName"]]; [filme setPais:[item objectForKey:@"country"]]; + + NSString *year = [item objectForKey:@"releaseDate"]; + ano = [year substringToIndex:4]; + + [filme setLancamento:ano]; + + [filmes addObject:filme]; } From cca8e6057cea9d9fa2ffda8425fc98acda4f5b64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isa=C3=ADas?= Date: Wed, 11 Mar 2015 12:02:05 -0300 Subject: [PATCH 2/4] Bronze 2 --- iTunesSearch/TableView.xib | 47 +++++++++++++++++++- iTunesSearch/TableViewController.h | 6 ++- iTunesSearch/TableViewController.m | 24 +++++++++-- iTunesSearch/iTunesManager.m | 69 ++++++++++++++++-------------- 4 files changed, 108 insertions(+), 38 deletions(-) diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index f4a02b9..f00ed6f 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -1,11 +1,14 @@ - + + + + @@ -15,11 +18,51 @@ + + + + + + + + + Title + Title + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + diff --git a/iTunesSearch/TableViewController.h b/iTunesSearch/TableViewController.h index 0cbb5c4..a16bc6c 100644 --- a/iTunesSearch/TableViewController.h +++ b/iTunesSearch/TableViewController.h @@ -8,10 +8,14 @@ #import -@interface TableViewController : UIViewController +@interface TableViewController : UIViewController +@property (strong, nonatomic) IBOutlet UISearchBar *busca; @property (strong, nonatomic) IBOutlet UITableView *tableview; +@property (strong, nonatomic) IBOutlet UIView *header; + + @end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index ca381a5..d4f4496 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -17,7 +17,9 @@ @interface TableViewController () { @end -@implementation TableViewController +@implementation TableViewController { + iTunesManager *itunes; +} @@ -27,11 +29,16 @@ - (void)viewDidLoad { UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - iTunesManager *itunes = [iTunesManager sharedInstance]; - midias = [itunes buscarMidias:@"Band"]; + itunes = [iTunesManager sharedInstance]; #warning Necessario para que a table view tenha um espaco em relacao ao topo, pois caso contrario o texto ficara atras da barra superior - self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 15.f)]; + + + _header = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 70)]; + + _busca.translucent = YES; + + [_busca resignFirstResponder]; } - (void)didReceiveMemoryWarning { @@ -69,4 +76,13 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat } + +-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { + searchBar = _busca; + NSString *termo = [[NSString alloc] init]; + termo = searchBar.text; + midias = [itunes buscarMidias:termo]; + [searchBar endEditing:YES]; + [self.tableview reloadData]; +} @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index 337726c..8224cae 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -8,6 +8,7 @@ #import "iTunesManager.h" #import "Entidades/Filme.h" +#import @implementation iTunesManager @@ -34,40 +35,46 @@ - (NSArray *)buscarMidias:(NSString *)termo { termo = @""; } - NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=movie", termo]; - NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; - - NSError *error; - NSDictionary *resultado = [NSJSONSerialization JSONObjectWithData:jsonData - options:NSJSONReadingMutableContainers - error:&error]; - if (error) { - NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); - return nil; - } - - NSArray *resultados = [resultado objectForKey:@"results"]; - NSMutableArray *filmes = [[NSMutableArray alloc] init]; - NSString *ano = [[NSString alloc] init]; - - for (NSDictionary *item in resultados) { - Filme *filme = [[Filme alloc] init]; - [filme setNome:[item objectForKey:@"trackName"]]; - [filme setArtista:[item objectForKey:@"artistName"]]; - [filme setDuracao:[item objectForKey:@"trackTimeMillis"]]; - [filme setGenero:[item objectForKey:@"primaryGenreName"]]; - [filme setPais:[item objectForKey:@"country"]]; + @try { + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=movie", termo]; + NSData *jsonData = [NSData dataWithContentsOfURL: [NSURL URLWithString:url]]; - NSString *year = [item objectForKey:@"releaseDate"]; - ano = [year substringToIndex:4]; + NSError *error; + NSDictionary *resultado = [NSJSONSerialization JSONObjectWithData:jsonData + options:NSJSONReadingMutableContainers + error:&error]; + if (error) { + NSLog(@"Não foi possível fazer a busca. ERRO: %@", error); + return nil; + } - [filme setLancamento:ano]; - - - [filmes addObject:filme]; + NSArray *resultados = [resultado objectForKey:@"results"]; + NSMutableArray *filmes = [[NSMutableArray alloc] init]; + NSString *ano = [[NSString alloc] init]; + + for (NSDictionary *item in resultados) { + Filme *filme = [[Filme alloc] init]; + [filme setNome:[item objectForKey:@"trackName"]]; + [filme setArtista:[item objectForKey:@"artistName"]]; + [filme setDuracao:[item objectForKey:@"trackTimeMillis"]]; + [filme setGenero:[item objectForKey:@"primaryGenreName"]]; + [filme setPais:[item objectForKey:@"country"]]; + + NSString *year = [item objectForKey:@"releaseDate"]; + ano = [year substringToIndex:4]; + + [filme setLancamento:ano]; + + + [filmes addObject:filme]; + return filmes; + } + } + @catch (NSException *exception) { + UIAlertView *alerta = [[UIAlertView alloc] initWithTitle:@"Alerta" message:@"Termo não encontrado" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; + [alerta show]; + return nil; } - - return filmes; } From 3314c6c6b7e17788aeb53874573d88923f708486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isa=C3=ADas?= Date: Fri, 13 Mar 2015 10:06:30 -0300 Subject: [PATCH 3/4] Prata 1 e 2 --- iTunesSearch.xcodeproj/project.pbxproj | 18 +++ iTunesSearch/Entidades/Ebook.h | 20 +++ iTunesSearch/Entidades/Ebook.m | 13 ++ iTunesSearch/Entidades/Musica.h | 20 +++ iTunesSearch/Entidades/Musica.m | 14 ++ iTunesSearch/Entidades/Podcast.h | 20 +++ iTunesSearch/Entidades/Podcast.m | 13 ++ iTunesSearch/TableViewCell.xib | 4 +- iTunesSearch/TableViewController.m | 124 +++++++++++++++--- iTunesSearch/iTunesManager.h | 10 +- iTunesSearch/iTunesManager.m | 170 +++++++++++++++++++++---- 11 files changed, 383 insertions(+), 43 deletions(-) create mode 100644 iTunesSearch/Entidades/Ebook.h create mode 100644 iTunesSearch/Entidades/Ebook.m create mode 100644 iTunesSearch/Entidades/Musica.h create mode 100644 iTunesSearch/Entidades/Musica.m create mode 100644 iTunesSearch/Entidades/Podcast.h create mode 100644 iTunesSearch/Entidades/Podcast.m diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 79e06d7..973c7d6 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -17,6 +17,9 @@ 92C21CE11AAE76930052ABE6 /* TableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CDF1AAE76930052ABE6 /* TableViewCell.m */; }; 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */; }; 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C21CE71AAE858E0052ABE6 /* Filme.m */; }; + E43A1D211AB11745001F3A14 /* Musica.m in Sources */ = {isa = PBXBuildFile; fileRef = E43A1D201AB11745001F3A14 /* Musica.m */; }; + E43A1D241AB1175B001F3A14 /* Podcast.m in Sources */ = {isa = PBXBuildFile; fileRef = E43A1D231AB1175B001F3A14 /* Podcast.m */; }; + E43A1D271AB11778001F3A14 /* Ebook.m in Sources */ = {isa = PBXBuildFile; fileRef = E43A1D261AB11778001F3A14 /* Ebook.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,6 +52,12 @@ 92C21CE01AAE76930052ABE6 /* TableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TableViewCell.xib; sourceTree = ""; }; 92C21CE61AAE858E0052ABE6 /* Filme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Filme.h; path = Entidades/Filme.h; sourceTree = ""; }; 92C21CE71AAE858E0052ABE6 /* Filme.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Filme.m; path = Entidades/Filme.m; sourceTree = ""; }; + E43A1D1F1AB11745001F3A14 /* Musica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Musica.h; path = Entidades/Musica.h; sourceTree = ""; }; + E43A1D201AB11745001F3A14 /* Musica.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Musica.m; path = Entidades/Musica.m; sourceTree = ""; }; + E43A1D221AB1175B001F3A14 /* Podcast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Podcast.h; path = Entidades/Podcast.h; sourceTree = ""; }; + E43A1D231AB1175B001F3A14 /* Podcast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Podcast.m; path = Entidades/Podcast.m; sourceTree = ""; }; + E43A1D251AB11778001F3A14 /* Ebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Ebook.h; path = Entidades/Ebook.h; sourceTree = ""; }; + E43A1D261AB11778001F3A14 /* Ebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Ebook.m; path = Entidades/Ebook.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -146,6 +155,12 @@ children = ( 92C21CE61AAE858E0052ABE6 /* Filme.h */, 92C21CE71AAE858E0052ABE6 /* Filme.m */, + E43A1D1F1AB11745001F3A14 /* Musica.h */, + E43A1D201AB11745001F3A14 /* Musica.m */, + E43A1D221AB1175B001F3A14 /* Podcast.h */, + E43A1D231AB1175B001F3A14 /* Podcast.m */, + E43A1D251AB11778001F3A14 /* Ebook.h */, + E43A1D261AB11778001F3A14 /* Ebook.m */, ); name = Entidades; sourceTree = ""; @@ -250,7 +265,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E43A1D271AB11778001F3A14 /* Ebook.m in Sources */, 92C21CBC1AAE757A0052ABE6 /* TableViewController.m in Sources */, + E43A1D211AB11745001F3A14 /* Musica.m in Sources */, + E43A1D241AB1175B001F3A14 /* Podcast.m in Sources */, 92C21CDB1AAE75B30052ABE6 /* iTunesManager.m in Sources */, 92C21CB91AAE757A0052ABE6 /* AppDelegate.m in Sources */, 92C21CE81AAE858E0052ABE6 /* Filme.m in Sources */, diff --git a/iTunesSearch/Entidades/Ebook.h b/iTunesSearch/Entidades/Ebook.h new file mode 100644 index 0000000..a7d6834 --- /dev/null +++ b/iTunesSearch/Entidades/Ebook.h @@ -0,0 +1,20 @@ +// +// Ebook.h +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Ebook : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSNumber *duracao; +@property (nonatomic, strong) NSString *genero; +@property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *lancamento; + +@end diff --git a/iTunesSearch/Entidades/Ebook.m b/iTunesSearch/Entidades/Ebook.m new file mode 100644 index 0000000..8cb3d98 --- /dev/null +++ b/iTunesSearch/Entidades/Ebook.m @@ -0,0 +1,13 @@ +// +// Ebook.m +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Ebook.h" + +@implementation Ebook + +@end diff --git a/iTunesSearch/Entidades/Musica.h b/iTunesSearch/Entidades/Musica.h new file mode 100644 index 0000000..c2e8e0e --- /dev/null +++ b/iTunesSearch/Entidades/Musica.h @@ -0,0 +1,20 @@ +// +// Musica.h +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Musica : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSNumber *duracao; +@property (nonatomic, strong) NSString *genero; +@property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *lancamento; + +@end diff --git a/iTunesSearch/Entidades/Musica.m b/iTunesSearch/Entidades/Musica.m new file mode 100644 index 0000000..d52d62e --- /dev/null +++ b/iTunesSearch/Entidades/Musica.m @@ -0,0 +1,14 @@ +// +// Musica.m +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Musica.h" + +@implementation Musica + + +@end diff --git a/iTunesSearch/Entidades/Podcast.h b/iTunesSearch/Entidades/Podcast.h new file mode 100644 index 0000000..8914692 --- /dev/null +++ b/iTunesSearch/Entidades/Podcast.h @@ -0,0 +1,20 @@ +// +// Podcast.h +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import + +@interface Podcast : NSObject + +@property (nonatomic, strong) NSString *nome; +@property (nonatomic, strong) NSString *artista; +@property (nonatomic, strong) NSNumber *duracao; +@property (nonatomic, strong) NSString *genero; +@property (nonatomic, strong) NSString *pais; +@property (nonatomic, strong) NSString *lancamento; + +@end diff --git a/iTunesSearch/Entidades/Podcast.m b/iTunesSearch/Entidades/Podcast.m new file mode 100644 index 0000000..d2e49b2 --- /dev/null +++ b/iTunesSearch/Entidades/Podcast.m @@ -0,0 +1,13 @@ +// +// Podcast.m +// iTunesSearch +// +// Created by Isaías Lima on 11/03/15. +// Copyright (c) 2015 joaquim. All rights reserved. +// + +#import "Podcast.h" + +@implementation Podcast + +@end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index 9076da3..8faa96f 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -17,7 +17,7 @@