2009-06-13 3 views
1

Ich habe ein Servlet, das eine PLIST-XML-Datei bereitstellt. Was ist der beste Weg, dies in eine NSDictionary zu schieben? Ich habe das im Grunde funktioniert mit:kanonische Art, PLIST von URL in NSDictionary zu lesen? Wie man das Zeitlimit kontrolliert?

NSDictionary* dict = [ [ NSDictionary alloc] initWithContentsOfURL: 
        [NSURL URLWithString: @"http://example.com/blah"] ]; 

Aber dann habe ich keine Kontrolle über die Zeitüberschreitung; Ich möchte lieber nicht, dass meine Benutzeroberfläche für 60 Sekunden hängen bleibt, nur weil der Server (den ich nicht kontrollieren kann) einen Zischanfall hat. Ich weiß, über NSURLRequest, die ich folgende lassen tun:

NSURLRequest *theRequest=[NSURLRequest requestWithURL: 
     [NSURL URLWithString: @"http://example.com/blah" 
        cachePolicy:NSURLRequestUseProtocolCachePolicy 
      timeoutInterval:5 ]; 

Aber ich weiß nicht recht sehen, wie das zu NSDictionary füttern.

Antwort

5

Sie müssen dies mit den asynchronen Methoden tun. Beginnen Sie mit dieser Antwort/Beitrag:

Can I make POST or GET requests from an iphone application?

Diese erhalten Sie Ihre Daten und legen Sie sie in einem Varibale: response. Jetzt müssen Sie den Code hinzufügen, um es zu einem NSDictionary in dem folgenden Verfahren zu konvertieren:

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

Ich habe 2 Möglichkeiten gefunden NSData zu NSDictionary zu konvertieren. Dieser Weg ist direkt aus dem Apple Archives and Serializations Guide.

NSString *errorStr = nil; 
NSPropertyListFormat format; 

NSDictionary *dictionary = [NSPropertyListSerialization propertyListFromData: responseData 
       mutabilityOption: NSPropertyListImmutable 
       format: &format 
       errorDescription: &errorStr]; 

Zweitens:

NSString *string = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
NSDictionary *dictionary = [string propertyList]; 
[string release]; 
+0

ausgezeichnet, dank Corey. Bin auf der Suche nach einem Weg ... du hast mir zwei gegeben. –

Verwandte Themen