2011-12-21 7 views
0

次のURL(http://jamesstenson.com/portraits/?json=1)のJSONデータにアクセスする際に問題が発生していますが、基本的には「添付ファイル」の下の「フル」「url」にアクセスします。次のように現時点では私のコードは次のとおりです。NSJSONSerializationから生成されたNSDictionary内のJSONデータにアクセスする

NSError *e = nil; 
NSData *jsonFeed = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://jamesstenson.com/portraits/?json=1"]]; 
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:jsonFeed options:NSJSONReadingMutableContainers error: &e]; 

if (!jsonData) { 
    NSLog(@"Error parsing JSON: %@", e); 
} else { 

    for(NSDictionary *item in [jsonData objectForKey:@"page"]) { 
     for(NSDictionary *attachment in [item objectForKey:@"images"]) { 
      NSLog(@"%@", attachment); 
     } 
    } 
} 

これはエラー投げ続ける:JSON 39.363

2011-12-21 10:13:39.362 JSON[3463:f803] -[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6a7b500 

2011-12-21 10:13 [3463:F803] *終端を'NSCFString objectForKey:]:インスタンスに送信された認識できないセレクタ0x6a7b500'

私はアイテムに間違ってアクセスしていますが、これを実現する方法を理解できません。私はhttp://blogs.captechconsulting.com/blog/nathan-jones/getting-started-json-ios5のようないくつかのソリューションを試しましたが、運はありません。私はiOS開発の初心者ですが、JSONの知識は少しあります。みんなに助けてくれてありがとう。

+0

あなたのJSONレスポンス(解析前)は正確に 'page'と' images'という名前の2つの項目を含んでいますか? – Malloc

+0

エラーがどこから来ているか(どこの行)を正確に記述する必要があります。そのJSONでその特定のエラーが発生しているはずはありません。しかし、あなたの基本的な問題は、あなたが "添付ファイル"配列を抽出しないことです。 –

+0

@Hot Licks [__NSCFString objectForKey:]:認識できないセレクタがエラーとしているので、エラーはこの行にあります([jsonData objectForKey:@ "page"]のNSDictionary *項目)。 – Nakkeeran

答えて

3

問題は、あなたが項目にNSDictionaryのを取得することはありません、それは方法を知っているために、このリンクfor each loop in objective c for accessing NSMutable dictionaryをチェックし、辞書のあなたのキーを返します

をNSStringのことと思われるループ

for(NSDictionary *item in [jsonData objectForKey:@"page"]) 

のためにあなたにあります以下は

NSDictionay

を横断することはあなたの要件に変更されたコードで、あなた

if (!jsonData) { 
     NSLog(@"Error parsing JSON: %@", e); } else { 
     NSArray *attachments = [[jsonData objectForKey:@"page"] objectForKey:@"attachments"]; 
     for(NSDictionary *object in attachments) { 
       NSLog(@"%@", [object objectForKey:@"images"]); 
       NSLog(@"%@", [[[object objectForKey:@"images"] objectForKey:@"full"] objectForKey:@"url"]); 
     } 
} 
役立つかもしれません
+0

@Hot Licks私の答えを投票して下さった理由は何ですか?私は自分自身を訂正できるように知らせてくれますか? – Nakkeeran

+0

ねえ、これはかなり素晴らしいです!だから近くに!フルサイズのURLにアクセスするにはどうすればよいですか?あなたがNSLog機能でそれを吐き出す方法を私に見せてもらえれば、私は非常にうれしく、あなたの答えを緑のダニでマークするでしょう! :D – Nagra

+0

NSLog(@ "%@"、[[オブジェクトオブジェクトのキー:@ "画像"] objectForKey:@ "フル"] objectForKey:@ "URL"]); – Nakkeeran

関連する問題