2012-03-27 64 views
0

我遇到了一個問題,正確訪問從Flickr數據(flickr.photosets.getPhotos調用)構建的NSDictionary。它不僅僅顯示描述標籤的內容,而是讀取描述標籤......以及一些不必要的數據和引號。處理從Flickr解析的NSDictionary內容

例如:

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

產生這樣的響應:

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

我試圖修改的NSString這個

NSString *descripTruncated = [itemDescriptionPre substringFromIndex:17]; 

但它並沒有導致系統崩潰在運行時。它也不涉及項目結尾的項目。我很抱歉,因爲NSString的修改似乎在這裏被討論了很多,但我無法找到反映我的情況。

下面是一些更多的上下文我的代碼:

- (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

你確定'itemDescriptionPre'是一個NSString?如果不是,它應該是一個NSDictionary,你可以使用'objectForKey:'。如果沒有,爲什麼不採用它的'JSONValue'? – yuji 2012-03-27 18:16:40

+0

你太棒了!我把它調整爲:'NSDictionary * itemDescriptionPre = [photoDescriptions objectAtIndex:0]; NSString * itemDescription = [itemDescriptionPre objectForKey:@「_ content」];' – 2012-03-27 19:59:09

+0

好的!我會將其作爲答案發布。隨意接受;) – yuji 2012-03-27 20:03:22

回答

0

itemDescriptionPre實際上是一個NSDictionary。這應該工作:

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

工作就像一個魅力。謝謝! – 2012-04-05 19:38:38