Wie kann ich Daten aus der URL auf dem iPhone?
Bin ich mit dem code aus dem Apple-Dokument, um einige der HTTP-Kommunikation. Ich kann eine Verbindung zu der URL erfolgreich, aber ich konnte nicht empfangen von Daten von meinem server.
//create the request
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://..."]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
//create the connection with the request
//and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
//Create the NSMutableData that will hold
//the received data
//receivedData is declared as a method instance elsewhere
NSMutableData *receivedData=[[NSMutableData data] retain];
} else {
//inform the user that the download could not be made
}
Kann der Grund dafür sein:
-
Ich erkläre
receivedData
in der Aktion selbst. Die Anmerkung sagt, ich soll es erklären anderswo. Wo soll ich es erklären? Sollte ich es erklären, wie controller-Eigenschaft? -
Wie kann
[[NSMutableData data] retain]
finden Sie die URL, wie ist es außerhalb derif{}
?
- Tom Harrington hat alle technischen details drauf, aber wenn Sie wollen, um zu sehen, was er beschreibt die Arbeit, in der Aktion, werfen Sie einen Blick auf die GitHub-Quelle entweder meine demo/training iPhone-Anwendung oder diejenigen, die von Programmierern viel weiter Fortgeschritten, als ich bin, wie die Git-Phone-app. diese Beiden Beispiel-apps machen, die genaue rufen Sie zu Fragen, und lernen durch Beispiel ist oft der beste Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie NSURLConnection ist initWithRequest:Stellvertretung: Methode, die Daten (zusammen mit anderen Sachen) wird an das delegate-Objekt in einer Sequenz von Methodenaufrufen. Die Methoden sind alle optional, so dass, wenn Sie Ihre Delegat-Objekt nicht umsetzen, das connection-Objekt nur überspringt Sie.
Gibt es eine Reihe von Methoden, so dass ich nicht Sie alle hier aufzulisten, aber Sie sind alle im detail beschrieben in der NSURLConnection-Dokumentation. Um die empfangenen Daten werden Sie umsetzen wollen -Anschluss:didReceiveData: auf dem delegate-Objekt. Diese Methode wird aufgerufen, potenziell mehr als einmal, mit einem NSData-Objekt, neu empfangenen Daten. Sie können dann fügen Sie, dass Ihre vorhandenen NSMutableData Objekt, oder tun, was sonst Sinn macht mit ihm. Sie wissen, dass Sie haben alle die Daten, wenn -connectionDidFinishLoading: wird aufgerufen, auf dem delegate-Objekt.
Beantworten Ihre zwei konkrete Fragen:
Ja, sollten Sie erklären es als eine Eigenschaft des controller-Objekt. Sie sollten auch sicherstellen, dass eine Zuordnung der Objekt VOR dem Aufruf NSURLConnection ist initWithRequest:Stellvertretung:,, weil die Verbindung startet das laden der Daten asynchron, sobald das connection-Objekt erstellt wird. Alternativ könnte man implementieren -Verbindung:didReceiveResponse: auf die Delegierten, überprüfen Sie die HTTP-status, und erstellen Sie das Daten-Objekt.
Die veränderlichen Daten-Objekt nicht finden können, die URL, die Verbindung, oder seine Daten-wie hast du es eingerichtet, aber wenn Sie befolgen Sie die Schritte, die ich beschrieben habe, dann können Sie Daten hinzufügen, um es, wie es kommt, und verwenden Sie es, wenn die Verbindung beendet.