NSURLSessionDataTask dataTaskWithURL gestionnaire d'achèvement de ne pas avoir à intervenir

J'ai été Objectif d'apprentissage de la C ces derniers temps, et j'ai décidé d'essayer de connexions.

Tout a été parfait avec NSURLConnection, jusqu'à ce que j'ai découvert qu'elle était dépassée, et essayé de travailler avec NSURLSession.

Je suis en train d'essayer un exemple très simple, mais n'arrive pas à obtenir mon application pour exécuter le code à l'intérieur de la fin du bloc.

Voici le code utilisé:

NSURL * url = [NSURL URLWithString:@"http://api.openweathermap.org/data/2.5/weather?q=London,uk"];

NSLog(@"2");
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSLog(@"3");

NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject
                                                             delegate: nil
                                                        delegateQueue: [NSOperationQueue mainQueue]];

NSLog(@"4");
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithURL:url
                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                    dispatch_sync(dispatch_get_main_queue(), ^{
                                                        NSLog(@"11");
                                                        if(error == nil)
                                                        {
                                                            NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
                                                            NSLog(@"Data = %@",text);
                                                        }
                                                        NSLog(@"22");
                                                    });

                                                }];

NSLog(@"5");
[dataTask resume];
NSLog(@"6");

J'ai tous les numéros imprimés à partir de l'exécution principal, mais le completionHandler n'est jamais exécutée. J'ai aussi essayé ce à l'aide d'un délégué, sans succès.

Merci d'avance.

MODIFIER
Comme suggéré, j'ai changé ma fonction à la suivante:

-(void) doGET{
    NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration     defaultSessionConfiguration];
    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject];
    NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithURL:[self url]
                                                    completionHandler:^(NSData *data,    NSURLResponse *response, NSError *error) {
                                                            NSLog(@"11");
                                                            if(error == nil)
                                                            {
                                                                NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
                                                                NSLog(@"Data = %@",text);
                                                            }
                                                            NSLog(@"22");

                                                    }];
    [dataTask resume];

}

Mon accomplissement manager est toujours pas à obtenir l'exécuter. J'ai aussi essayé avec le sharedSession au lieu de passer d'une configuration, mais pas de chance non plus.

Merci pour l'aide

Avez-vous jamais obtenir ce code fonctionne? Mon code est presque identique (je pense que nous avons visité les sites web de même) et je ne peut pas obtenir le code d'achèvement du bloc appelé. Je suis en cours d'exécution de mon code de test de l'unité avec le simulateur iOS 7.1, cependant, et je me demande si cela a un quelconque impact. J'ai aussi bricolé avec les NSURLSession et rien de tout ce qui a aidé. J'ai remarqué que vous avez marqués à la question comme réponse, mais c'est pas encore clair quelle a été la réponse?

OriginalL'auteur ylc | 2014-03-24