как использовать sendAsynchronousRequest: queue: completionHandler:

Вопрос из двух частей

Часть первая: Я пытаюсь создать асинхронный запрос к своей базе данных. В настоящее время я делаю это синхронно, но я хочу изучить оба способа, чтобы лучше понять, что происходит.

В настоящее время я настроил свой синхронный вызов следующим образом.

- (IBAction)setRequestString:(NSString *)string
{
    //Set database address
    NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"http://127.0.0.1:8778/instacodeData/"]; // imac development

    //PHP file name is being set from the parent view
    [databaseURL appendString:string];

    //call ASIHTTP delegates (Used to connect to database)
    NSURL *url = [NSURL URLWithString:databaseURL];

    //SynchronousRequest to grab the data
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSError *error;
    NSURLResponse *response;

    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    if (!result) {
        //Display error message here
        NSLog(@"Error");
    } else {

        //TODO: set up stuff that needs to work on the data here.
        NSString* newStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
        NSLog(@"%@", newStr);
    }
}

Я думаю, что мне нужно заменить вызов

NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

на асинхронную версию

sendAsynchronousRequest:queue:completionHandler:

, однако я не уверен, что передать в очередь или завершение обработчика ... Любые примеры / решения были бы очень признательны.

Часть вторая: Я читал о многозадачности и хотел бы поддержать это, убедившись, что мои запросы на соединение выполняются в случае прерывания. Я следил за этим примером

. В нем объясняется, как получить больше времени при возникновении прерывания, я понимаю, что он делает ... но не как применить его к этому соединению? Если у вас есть какие-либо примеры / руководства, которые помогут мне понять, как это применить, это было бы здорово!

74
задан C.Johns 14 February 2012 в 01:17
поделиться