Skip to content

Instantly share code, notes, and snippets.

Created December 7, 2017 10:26
Show Gist options
  • Save anonymous/5cbf3d1d0ca45ff95ec75ee584c510d9 to your computer and use it in GitHub Desktop.
Save anonymous/5cbf3d1d0ca45ff95ec75ee584c510d9 to your computer and use it in GitHub Desktop.

Revisions

  1. @invalid-email-address Anonymous created this gist Dec 7, 2017.
    45 changes: 45 additions & 0 deletions Snippet ObjC url request
    Original 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];

    }