2012-03-27 5 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 *descripTruncated = [itemDescriptionPre substringFromIndex:17]; 

でNSStringのを修正しようとしました。しかし、それはクラッシュを引き起こしませんでした実行時にまた、アイテムの最後にあるアイテムには対処しません。私は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

+0

あなたは素晴らしいです!私はこれを次のように調整しました: 'NSDictionary * itemDescriptionPre = [photoDescriptions objectAtIndex:0]; NSString * itemDescription = [itemDescriptionPre objectForKey:@ "_ content"]; ' –

+0

ニース!私は答えとして投稿します。自由に受け入れる;) – yuji

答えて

0

itemDescriptionPreが実際NSDictionaryです:

は、ここに私のコードにいくつかのより多くのコンテキストです。これは動作するはずです:

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

魅力的なように働いた。ありがとう! –

関連する問題