Created
December 7, 2017 10:26
-
-
Save anonymous/5cbf3d1d0ca45ff95ec75ee584c510d9 to your computer and use it in GitHub Desktop.
Revisions
-
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,45 @@ - (void) URLRequestObjCParaOCDN { //descomenta isto ---> //__weak "nomeDaClasseOndeTensIsto" *weakSelf = self; //nao uses self. em lado nenhum no block, usa weakSelf. nao pode originar leaks e é igual #proTip NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"o teu link aqui"]]; [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler: ^(NSData *data, NSURLResponse *response, NSError *error) { //Ele so executa isto quando o request e finalizado, isto e executado numa background thread. Se aqui dentro precisares de usar um "self." diz-me que ensino-te a fazer um weakify ao self para nao teres um memory leak. O "error" so traz erros quando nao tens net e assim, o data é onde vem o json ou o erro do body, o response e onde veem os headers. if (error == nil) { //isto assume que o request foi successfull a nivel de execucao, nao de integridade de dados if ([response isKindOfClass:[NSHTTPURLResponse class]]) { //isto apanha http e nao ftp NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; // do stuff if([httpResponse statusCode] < 400){ //tudo quanto sejam erros e server issues fica no else NSError *decryptionError; id deserialised = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&decryptionError]; if([[deserialised class] isSubclassOfClass:[NSArray class]]) { //se a resposta vier em array NSDictionary *responseArray = (NSDictionary *)deserialised; } else if([[deserialised class] isSubclassOfClass:[NSDictionary class]]) { //se a resposta for um dict NSDictionary *responseDict = (NSDictionary *)deserialised; } } else { } } } else { } }] resume]; }