Напоследък уча Objective C и реших да опитам връзки.
Всичко беше страхотно с NSURLConnection, докато не открих, че е остарял, и се опитах да работя с NSURLSession.
Опитвам се с много прост пример, но изглежда не мога да накарам приложението си да изпълнява кода вътре в блока за завършване.
Ето използвания код:
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");
Получавам всички числа, отпечатани от главното изпълнение, но completionHandler никога не се изпълнява. Опитах и това с помощта на делегат, без успех.
Благодаря предварително.
РЕДАКТИРАНЕ Както беше предложено, промених функцията си на следното:
-(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];
}
Моят мениджър за завършване все още не се изпълнява. Опитах също с sharedSession вместо да предам конфигурация, но също нямах успех.
Благодаря за помощта
NSURLSession
и нищо от това не помогна. Забелязах, че сте маркирали въпроса като отговорен, но все още не е ясно какъв беше отговорът? - person Jane Wayne   schedule 14.05.2014