so erstellen Sie eine synchrone NSURLConnection Anfrage

Ich will zu schaffen, einen synchronen nsurlconnection Anfrage. Ja ich weiß, das ist blöd und kenne ich die Einschränkungen (einfrieren der UI -) aber der Grund, warum ich möchte, um dies zu implementieren, um garnet die Daten, die ich erhalte vom server empfangen wurden, in der Reihenfolge gesendet, das Ist einer der Vorteile einer synchronen Verbindung.. wenn ich das richtig gelesen habe.

Werde ich mich mit "Grand Central Dispatch" zu erreichen, einige multi-threading, um die sync-Anforderung und habe es nicht-Effekt der Benutzeroberfläche der Haupt-thread... aber das kann später kommen, denn jetzt würde ich mag, um master die sync-Verbindung.

Das einzige Problem ist, dass ich bin mir nicht ganz sicher, wie ich meinen Anschluss wie synchron..

Hier ist mein code.

- (void)loadComics{

    [comics removeAllObjects]; //clears object of any old values
    [[self tableView] reloadData];

    NSURL *url = [NSURL URLWithString:@"http://www.comicbookresources.com/feed.php?feed=previews"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];

    //clear any existing connection
    if (connectionInProgress) {
        [connectionInProgress cancel];
        [connectionInProgress release];
    }

    [xmlData release];
    xmlData = [[NSMutableData alloc] init];

    connectionInProgress = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [xmlData appendData:data];
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection{

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xmlData];

    [parser setDelegate:self];

    [parser parse];

    [parser release];
    [[self tableView] reloadData];
}

Beispielen wäre toll.

Was meinst du mit "Granat die Daten, die ich erhalte vom server empfangen wurden, in der Reihenfolge, die es gesendet wird"? Synchrone Vernetzung—auch in einem hintergrund-thread—ist fast immer ein Indikator für ein schlechtes design.
naja soweit ich informiert bin async, kann manchmal empfangen von Daten in falscher Reihenfolge. Die Datenbank-engine die ich habe zu kommunizieren, verlangt von mir, dies zu tun syncronosly so wichtig es ist, zu empfangen die Daten in der richtigen Reihenfolge. Warum tun Sie denken, es ist ein Indikator für schlechtes design, ich bin daran interessiert, Ihre Perspektive, denn ich bin derzeit nur dabei, wie ich beauftragt worden, aber wenn ich zusammen ein Fall für die Datenbank, Ingenieur, warum sollte er also sonst hätte ich Intresse an der Anhörung Ihre Meinung.
Das ist nicht korrekt — Sie müssen nicht sorgen zu machen über den Empfang connection:didReceiveData: Rückrufe aus der Bestellung. Was du geschrieben hast sieht gut aus — kann man einfach verketten die Stücke von Daten, wie Sie Sie erhalten, und etwas mit den kompletten Daten in connectionDidFinishLoading:. Dies wäre nur dann ein problem, wenn, aus irgendeinem Grund, Sie liefen mehrere NSURLConnections zur gleichen Zeit, alle mit der gleichen delegieren. Aber im Allgemeinen werden Sie nicht wollen, zu tun!
okay cool ich bekommen, was Ihr sagen, Dank für die Klarstellung.

InformationsquelleAutor C.Johns | 2012-02-12

Schreibe einen Kommentar