Zweiteilige Frage
Erster Teil: Ich versuche, eine ASynchrone Anforderung an meine Datenbank zu erstellen. Ich mache es derzeit synchron, aber ich möchte beide Möglichkeiten kennenlernen, um besser zu verstehen, was los ist.
Derzeit habe ich meinen synchronen Anruf so eingerichtet.
- (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);
}
}
Ich denke, ich muss den Anruf ersetzen
NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
mit der ASynchronous-Version
sendAsynchronousRequest:queue:completionHandler:
Ich bin mir jedoch nicht sicher, was ich an die Warteschlange oder den CompletionHandler übergeben soll. Beispiele / Lösungen wären sehr willkommen.
Teil zwei: Ich habe über Multitasking gelesen und möchte es unterstützen, indem ich sicherstelle, dass meine Verbindungsanfragen vollständig sind, wenn ein Interrupt auftritt. Ich bin diesem Beispiel gefolgt
Darin wird erklärt, wie man mehr Zeit gewinnt, wenn ein Interrupt auftritt. Ich verstehe, was er tut. Aber nicht, wie man ihn auf diese Verbindung anwendet. Wenn Sie Beispiele / Tutorials haben, die mir helfen, herauszufinden, wie man sie anwendet, wäre das großartig!