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);
}
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
Du bist großartig! Ich habe es so eingestellt: 'NSDictionary * itemDescriptionPre = [photoDescriptions objectAtIndex: 0]; NSString * itemDescription = [itemDescriptionPre objectForKey: @ "_ content"]; ' –
Schön! Ich werde das als Antwort posten. Fühlen Sie sich frei zu akzeptieren;) – yuji