2012-03-27 8 views
0

Ich habe ein Problem beim Zugriff auf ein NSDictionary aus Flickr-Daten (der flickr.photosets.getPhotos Aufruf) ordnungsgemäß zugegriffen. Anstatt nur den Inhalt eines Beschreibungs-Tags anzuzeigen, liest es das Beschreibungs-Tag zusammen mit einigen unnötigen Daten und Anführungszeichen.Umgang mit NSDictionary Inhalt von Flickr geparst

Zum Beispiel:

NSLog (@"Item description readout: %@", itemDescriptionPre); 

ergibt diese Antwort:

Item description readout: { 
    "_content" = "This is a caption from a photo drawn through Flickr"; 
} 

Ich habe versucht, die NSString mit diesem

NSString *descripTruncated = [itemDescriptionPre substringFromIndex:17]; 

zu ändern Aber es hat verursacht keinen Absturz zur Laufzeit. Es behandelt auch nicht die Artikel am Ende des Artikels. Ich entschuldige mich, da NSString-Modifikationen hier anscheinend viel diskutiert werden, aber ich konnte keine Umstände finden, die mir entsprechen.

hier etwas mehr Kontext zu meinem Code:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

NSLog(@"Storing incoming data"); 

NSDictionary *results = [jsonString JSONValue]; 

NSLog(@"Building NSDictionary."); 

NSArray *photos = [[results objectForKey:@"photoset"] objectForKey:@"photo"]; 

NSLog(@"Building array from dictionary."); 

// Loop through each entry in the dictionary... 
for (NSDictionary *photo in photos) 
{ 
NSString *title = [photo objectForKey:@"title"]; 

    NSString *description = [photo objectForKey:@"description"]; 

[photoTitles addObject:title]; 

    [photoDescriptions addObject:description]; 

} 

NSLog(@"Nicer display for results: %@ First image title: %@ First image description: %@", results, [photoTitles objectAtIndex:0], [photoDescriptions objectAtIndex:0]); 

[self updateDisplay]; 

} 


-(void) updateDisplay{ 

NSString *capTitle = [[photoTitles objectAtIndex:0] uppercaseString]; 

photoTitleDisplay.text = capTitle; 

NSString *itemDescriptionPre = [photoDescriptions objectAtIndex:0]; 

NSLog (@"Item description readout: %@", itemDescriptionPre); 

} 
+0

Sind Sie sicher, 'itemDescriptionPre' ist ein NSString? Wenn nicht, sollte es ein NSDictionary sein und Sie können 'objectForKey:' verwenden. Wenn nicht, warum nimmst du nicht seinen 'JSONValue'? – yuji

+0

Du bist großartig! Ich habe es so eingestellt: 'NSDictionary * itemDescriptionPre = [photoDescriptions objectAtIndex: 0]; NSString * itemDescription = [itemDescriptionPre objectForKey: @ "_ content"]; ' –

+0

Schön! Ich werde das als Antwort posten. Fühlen Sie sich frei zu akzeptieren;) – yuji

Antwort

0

itemDescriptionPre ist eigentlich ein NSDictionary. Das sollte funktionieren:

NSDictionary *itemDescriptionPre = [photoDescriptions objectAtIndex:0]; 
NSString *itemDescription = [itemDescriptionPre objectForKey:@"_content"]; 
+0

Arbeitete wie ein Charme. Vielen Dank! –