Получить NSData из блока - PullRequest
       2

Получить NSData из блока

0 голосов
/ 03 декабря 2011

Попытка получить данные из блока, но NSLog (localData) показывает ноль.Как получить данные из блока?

    __block NSData *localData = nil;
        JBContainedURLConnection *connection = [[JBContainedURLConnection alloc] initWithURLString:flightsURLStr userInfo:nil completionHandler:^(JBContainedURLConnection *connection, NSError *error, NSString *urlString, NSDictionary *userInfo, NSData *data) {

            if (nil != error) {

                // Handle the error.
                // A nil error indicates success!
                NSLog(@"Error! %@", [error userInfo]);
                return;
            }
            localData = [NSData dataWithData:data];
             }];

NSLog(localData);

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

Найденное решение в кулинарной книге Е. Садуна:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
localData = [NSData dataWithData:data]; 
}];
0 голосов
/ 03 декабря 2011

Предполагая, что это класс оболочки NSURLConnection Джейсона Бреннана, который вы используете:

Это асинхронный вызов, который является оболочкой для обычного механизма асинхронной загрузки NSURLConnection. Блок завершения будет запущен в том же потоке после возврата этого метода и после попытки записи данных.

Вы можете поместить оператор NSLog в блок завершения и увидите, что он срабатывает после попытки записи данных.

Надеюсь, это поможет.

...