Вопрос из двух частей
Часть первая:
Я пытаюсь создать ASynchronous запрос к моей базе данных. В настоящее время я делаю это синхронно, однако я хочу изучить оба способа, чтобы лучше понять, что происходит.
В настоящее время я настроил свой синхронный вызов следующим образом.
- (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];
с AS-синхронной версией
sendAsynchronousRequest:queue:completionHandler:
однако я не уверен, что передать в очередь или завершение. Handler ... Любые примеры / решения будут с благодарностью.
Часть вторая:
Я читал о многозадачности, и я хотел бы поддержать его, убедившись, что мои запросы на подключение выполнены, если есть прерывание. Я следовал этому примеру
В нем объясняется, как выиграть больше времени, если происходит прерывание, я понимаю, что он делает .. но не как применить его к этой связи? если у вас есть примеры / учебники, которые помогут мне понять, как их применять, это было бы здорово!