From d81aeb72fe2059173f0f56bd76f54ea0d8b13374 Mon Sep 17 00:00:00 2001 From: Matheus Amancio Seixeiro Date: Wed, 11 Mar 2015 09:10:05 -0300 Subject: [PATCH 1/2] bronze 1 e 2 prontos --- iTunesSearch/TableView.xib | 34 +++++++++++++++++++++++++-- iTunesSearch/TableViewCell.h | 2 ++ iTunesSearch/TableViewCell.xib | 37 ++++++++++++++++++++++++------ iTunesSearch/TableViewController.h | 4 ++++ iTunesSearch/TableViewController.m | 28 ++++++++++++++++------ iTunesSearch/iTunesManager.m | 12 ++++------ 6 files changed, 94 insertions(+), 23 deletions(-) diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index 55f128c..b98f5df 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -1,11 +1,12 @@ - + + @@ -15,11 +16,40 @@ + + + + + + + + + + + + + + + + + + + + - + diff --git a/iTunesSearch/TableViewCell.h b/iTunesSearch/TableViewCell.h index b630349..858ccc1 100644 --- a/iTunesSearch/TableViewCell.h +++ b/iTunesSearch/TableViewCell.h @@ -12,6 +12,8 @@ @property (weak, nonatomic) IBOutlet UILabel *nome; @property (weak, nonatomic) IBOutlet UILabel *tipo; +@property (weak, nonatomic) IBOutlet UILabel *genero; +@property (weak, nonatomic) IBOutlet UILabel *duracao; @end diff --git a/iTunesSearch/TableViewCell.xib b/iTunesSearch/TableViewCell.xib index bf8bd3f..d5c0a4a 100644 --- a/iTunesSearch/TableViewCell.xib +++ b/iTunesSearch/TableViewCell.xib @@ -1,5 +1,5 @@ - + @@ -7,40 +7,63 @@ - - + + - + + + + + + + + + + + - + diff --git a/iTunesSearch/TableViewController.h b/iTunesSearch/TableViewController.h index 0cbb5c4..7e434f6 100644 --- a/iTunesSearch/TableViewController.h +++ b/iTunesSearch/TableViewController.h @@ -13,5 +13,9 @@ @property (strong, nonatomic) IBOutlet UITableView *tableview; +@property (weak, nonatomic) IBOutlet UITextField *searchfield; + +- (IBAction)search:(id)sender; + @end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index f689980..1aefbfa 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -19,19 +19,18 @@ @interface TableViewController () { @implementation TableViewController - +@synthesize searchfield; - (void)viewDidLoad { [super viewDidLoad]; - UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; - [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; + UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; + [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - iTunesManager *itunes = [iTunesManager sharedInstance]; - midias = [itunes buscarMidias:@"Apple"]; + iTunesManager *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)]; + //self.tableview.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableview.bounds.size.width, 15.f)]; } - (void)didReceiveMemoryWarning { @@ -56,13 +55,28 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS [celula.nome setText:filme.nome]; [celula.tipo setText:@"Filme"]; + [celula.genero setText:filme.genero]; + [celula.duracao setText:[NSString stringWithFormat:@"%@",filme.duracao]]; + + + return celula; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 70; + return 130; } + +- (IBAction)search:(id)sender { +// UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; +// [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; + iTunesManager *itunes = [iTunesManager sharedInstance]; + midias = [itunes buscarMidias:(searchfield.text) ]; + [self.searchfield resignFirstResponder]; + [self.tableview reloadData]; + +} @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index e2babda..b497b8a 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -38,13 +38,11 @@ - (NSArray *)buscarMidias:(NSString *)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; - } + 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]; From ca09e5a5fd6f1795841d09b645e6a4d23ab2a6fd Mon Sep 17 00:00:00 2001 From: Matheus Amancio Seixeiro Date: Fri, 13 Mar 2015 08:18:56 -0300 Subject: [PATCH 2/2] bronze 3 e prata 1 --- iTunesSearch.xcodeproj/project.pbxproj | 21 ++++++++ iTunesSearch/Entidades/Filme.h | 1 + iTunesSearch/TableView.xib | 34 ++---------- iTunesSearch/TableViewController.h | 6 +-- iTunesSearch/TableViewController.m | 40 +++++++++----- iTunesSearch/en.lproj/Localizable.strings | 10 ++++ iTunesSearch/fr.lproj/Localizable.strings | 10 ++++ iTunesSearch/iTunesManager.h | 3 +- iTunesSearch/iTunesManager.m | 64 +++++++++++++---------- iTunesSearch/pt.lproj/Localizable.strings | 10 ++++ 10 files changed, 125 insertions(+), 74 deletions(-) create mode 100644 iTunesSearch/en.lproj/Localizable.strings create mode 100644 iTunesSearch/fr.lproj/Localizable.strings create mode 100644 iTunesSearch/pt.lproj/Localizable.strings diff --git a/iTunesSearch.xcodeproj/project.pbxproj b/iTunesSearch.xcodeproj/project.pbxproj index 79e06d7..4a99fb5 100644 --- a/iTunesSearch.xcodeproj/project.pbxproj +++ b/iTunesSearch.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 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 */; }; + DD0870091AB0F1B0002F0297 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DD08700B1AB0F1B0002F0297 /* Localizable.strings */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,6 +50,9 @@ 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 = ""; }; + DD08700A1AB0F1B0002F0297 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + DD08700C1AB0F1C2002F0297 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/Localizable.strings; sourceTree = ""; }; + DD08700E1AB1AE46002F0297 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -101,6 +105,7 @@ 92C21CDA1AAE75B30052ABE6 /* iTunesManager.m */, 92C21CC01AAE757A0052ABE6 /* Images.xcassets */, 92C21CB31AAE757A0052ABE6 /* Supporting Files */, + DD08700B1AB0F1B0002F0297 /* Localizable.strings */, ); path = iTunesSearch; sourceTree = ""; @@ -213,6 +218,8 @@ knownRegions = ( en, Base, + pt, + fr, ); mainGroup = 92C21CA71AAE757A0052ABE6; productRefGroup = 92C21CB11AAE757A0052ABE6 /* Products */; @@ -233,6 +240,7 @@ 92C21CC11AAE757A0052ABE6 /* Images.xcassets in Resources */, 92C21CE21AAE76930052ABE6 /* TableViewCell.xib in Resources */, 92C21CDD1AAE75DC0052ABE6 /* TableView.xib in Resources */, + DD0870091AB0F1B0002F0297 /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -277,6 +285,19 @@ }; /* End PBXTargetDependency section */ +/* Begin PBXVariantGroup section */ + DD08700B1AB0F1B0002F0297 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + DD08700A1AB0F1B0002F0297 /* en */, + DD08700C1AB0F1C2002F0297 /* pt */, + DD08700E1AB1AE46002F0297 /* fr */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 92C21CD11AAE757A0052ABE6 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/iTunesSearch/Entidades/Filme.h b/iTunesSearch/Entidades/Filme.h index eb126dc..3c015be 100644 --- a/iTunesSearch/Entidades/Filme.h +++ b/iTunesSearch/Entidades/Filme.h @@ -16,5 +16,6 @@ @property (nonatomic, strong) NSString *duracao; @property (nonatomic, strong) NSString *genero; @property (nonatomic, strong) NSString *pais; +@property (nonatomic,strong) NSString *midia; @end diff --git a/iTunesSearch/TableView.xib b/iTunesSearch/TableView.xib index b98f5df..853a65c 100644 --- a/iTunesSearch/TableView.xib +++ b/iTunesSearch/TableView.xib @@ -6,7 +6,7 @@ - + @@ -16,35 +16,11 @@ - + - - - - - - - - - - - - - - - - - - + + + diff --git a/iTunesSearch/TableViewController.h b/iTunesSearch/TableViewController.h index 7e434f6..e3b6bca 100644 --- a/iTunesSearch/TableViewController.h +++ b/iTunesSearch/TableViewController.h @@ -8,14 +8,12 @@ #import -@interface TableViewController : UIViewController - +@interface TableViewController : UIViewController @property (strong, nonatomic) IBOutlet UITableView *tableview; -@property (weak, nonatomic) IBOutlet UITextField *searchfield; +@property (weak, nonatomic) IBOutlet UISearchBar *search; -- (IBAction)search:(id)sender; @end diff --git a/iTunesSearch/TableViewController.m b/iTunesSearch/TableViewController.m index 1aefbfa..a97d5c8 100644 --- a/iTunesSearch/TableViewController.m +++ b/iTunesSearch/TableViewController.m @@ -12,14 +12,14 @@ #import "Entidades/Filme.h" @interface TableViewController () { - NSArray *midias; + NSMutableArray *midias; } @end @implementation TableViewController -@synthesize searchfield; + - (void)viewDidLoad { [super viewDidLoad]; @@ -27,7 +27,11 @@ - (void)viewDidLoad { UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; - iTunesManager *itunes = [iTunesManager sharedInstance]; + [iTunesManager sharedInstance]; + + [self.search setDelegate:self]; + self.search.placeholder = NSLocalizedString(@"pesquisar", nil); + #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)]; @@ -51,12 +55,12 @@ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TableViewCell *celula = [self.tableview dequeueReusableCellWithIdentifier:@"celulaPadrao"]; - Filme *filme = [midias objectAtIndex:indexPath.row]; + Filme *asMidias = [midias objectAtIndex:indexPath.row]; - [celula.nome setText:filme.nome]; - [celula.tipo setText:@"Filme"]; - [celula.genero setText:filme.genero]; - [celula.duracao setText:[NSString stringWithFormat:@"%@",filme.duracao]]; + [celula.nome setText:asMidias.nome]; + [celula.tipo setText:asMidias.midia]; + [celula.genero setText:asMidias.genero]; + [celula.duracao setText:[NSString stringWithFormat:@"%@",asMidias.duracao]]; @@ -70,12 +74,22 @@ -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPat -- (IBAction)search:(id)sender { -// UINib *nib = [UINib nibWithNibName:@"TableViewCell" bundle:nil]; -// [self.tableview registerNib:nib forCellReuseIdentifier:@"celulaPadrao"]; +- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar +{ + iTunesManager *itunes = [iTunesManager sharedInstance]; - midias = [itunes buscarMidias:(searchfield.text) ]; - [self.searchfield resignFirstResponder]; + midias = [[NSMutableArray alloc] init]; +// NSArray *movie = [itunes buscarMidias:(_search.text) andMedia:@"movie"]; +// NSArray *ebook = [itunes buscarMidias:(_search.text) andMedia:@"ebook"]; +// NSArray *podcast = [itunes buscarMidias:(_search.text) andMedia: @"podcast" ]; +// NSArray *music = [itunes buscarMidias:(_search.text) andMedia:@"music"]; + [midias addObjectsFromArray:[itunes buscarMidias:(_search.text) andMedia:@"movie"]]; + [midias addObjectsFromArray:[itunes buscarMidias:(_search.text) andMedia:@"ebook"]]; + [midias addObjectsFromArray:[itunes buscarMidias:(_search.text) andMedia: @"podcast" ]]; + [midias addObjectsFromArray:[itunes buscarMidias:(_search.text) andMedia:@"music"]]; + + + [self.search resignFirstResponder]; [self.tableview reloadData]; } diff --git a/iTunesSearch/en.lproj/Localizable.strings b/iTunesSearch/en.lproj/Localizable.strings new file mode 100644 index 0000000..4889d69 --- /dev/null +++ b/iTunesSearch/en.lproj/Localizable.strings @@ -0,0 +1,10 @@ +/* + Localzable.strings + iTunesSearch + + Created by Matheus Amancio Seixeiro on 3/11/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ + + +"pesquisar" ="search"; \ No newline at end of file diff --git a/iTunesSearch/fr.lproj/Localizable.strings b/iTunesSearch/fr.lproj/Localizable.strings new file mode 100644 index 0000000..6527506 --- /dev/null +++ b/iTunesSearch/fr.lproj/Localizable.strings @@ -0,0 +1,10 @@ +/* + Localzable.strings + iTunesSearch + + Created by Matheus Amancio Seixeiro on 3/11/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ + + +"pesquisar" ="Testetstetstes xablau"; \ No newline at end of file diff --git a/iTunesSearch/iTunesManager.h b/iTunesSearch/iTunesManager.h index c0e366b..405caf5 100644 --- a/iTunesSearch/iTunesManager.h +++ b/iTunesSearch/iTunesManager.h @@ -7,6 +7,7 @@ // #import +#import @interface iTunesManager : NSObject @@ -16,6 +17,6 @@ */ + (iTunesManager*)sharedInstance; -- (NSArray *)buscarMidias:(NSString *)termo; +- (NSArray *)buscarMidias:(NSString *)termo andMedia:(NSString*)media; @end diff --git a/iTunesSearch/iTunesManager.m b/iTunesSearch/iTunesManager.m index b497b8a..17e2c03 100644 --- a/iTunesSearch/iTunesManager.m +++ b/iTunesSearch/iTunesManager.m @@ -24,44 +24,54 @@ + (id)sharedInstance isFirstAccess = NO; SINGLETON = [[super allocWithZone:NULL] init]; }); - return SINGLETON; } -- (NSArray *)buscarMidias:(NSString *)termo { +- (NSArray *)buscarMidias:(NSString *)termo andMedia: (NSString *)media { + if (!termo) { termo = @""; } + @try { + NSString *url = [NSString stringWithFormat:@"https://itunes.apple.com/search?term=%@&media=%@", termo, media]; + 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]; + + + for (NSDictionary *item in resultados) { + + Filme *filme = [[Filme alloc] init]; + [filme setMidia:media]; + [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"]]; + [filmes addObject:filme]; + } + + return filmes; + } - 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]; - 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"]]; - [filmes addObject:filme]; + @catch (NSException *exception) { + UIAlertView *alerta = [[UIAlertView alloc]initWithTitle:@"caraca deu ruim" message:@"mano faz alguma coisa" delegate:self cancelButtonTitle:@"CANCELAA "otherButtonTitles:nil]; + [alerta show]; + return nil; + } - - return filmes; -} - +} #pragma mark - Life Cycle diff --git a/iTunesSearch/pt.lproj/Localizable.strings b/iTunesSearch/pt.lproj/Localizable.strings new file mode 100644 index 0000000..e1ccf9d --- /dev/null +++ b/iTunesSearch/pt.lproj/Localizable.strings @@ -0,0 +1,10 @@ +/* + Localzable.strings + iTunesSearch + + Created by Matheus Amancio Seixeiro on 3/11/15. + Copyright (c) 2015 joaquim. All rights reserved. +*/ + + +"pesquisar"= "pesquisar"; \ No newline at end of file