2016-12-19 25 views
6

私は約2時間ほど前から検索していましたが、の目的の明確な説明が誰もないようです。Objective CでJSONファイルを読む方法。私はXCodeのパス内にそのファイルをコピーしますObjective CでJSONファイルを読む

{ 
    "colors": [{ 
     "name": "green", 
     "pictures": [{ 
      "pic": "pic1.png", 
      "name": "green1" 
     }, { 
      "pic": "pic2.png", 
      "name": "green2" 
     }] 
    }, { 
     "name": "yellow", 
     "pictures": [{ 
      "pic": "pic3.png", 
      "name": "yellow1" 
     }] 
    }] 
} 
  1. はのは、私はJSONファイルはこのように見て、colors.jsonと呼ばあるとしましょうか?

  2. このファイルをプログラムで取得するにはどうすればよいですか?

  3. 私がこのファイルを作成した後、 - colorsオブジェクトごとにnameの値を読み取るにはどうすればよいですか?

  4. どのように私は "という名前の色の各画像について、NSStringのname値を取得する"と言うでしょうか?

私はいくつかの方法を試してきましたが、まだ結論に達していません。私はちょうどJSONのコンセプトを間違って理解していますか?

+0

は、[この]を試してみてください(https://www.google.de/search?client=firefox-b-ab&q=objc+read+json&spell=1&sa=X&ved = 0ahUKwi5173o0IDRAhXDthQKHbFGAP4QvwUIGigA)。 – shallowThought

+2

まあ、正直言って、あなたは間違っている必要があります。すべてを1つで検索するのではなく、次の方法で検索してください: 1. Xcodeプロジェクトにファイルを追加するには? 2.客観的なcを使ってプログラムでファイルを読む方法は? 3. JSONファイルの目的Cのアーカイブを解除するにはどうすればよいですか? – dirtydanee

+0

私はすでにそれをしていない場合、私はここで質問をしたと思いますか? – Ikeaner

答えて

16

JSONファイルをXcodeのプロジェクトナビゲータペインにドラッグするだけで、クラスファイルと同じ場所に表示されます。

[必要に応じてアイテムをコピー]チェックボックスをオンにして、正しいターゲットに追加してください。

は次に、このような何かを:

- (void)doSomethingWithTheJson 
{ 
    NSDictionary *dict = [self JSONFromFile]; 

    NSArray *colours = [dict objectForKey:@"colors"]; 

    for (NSDictionary *colour in colours) { 
     NSString *name = [colour objectForKey:@"name"]; 
     NSLog(@"Colour name: %@", name); 

     if ([name isEqualToString:@"green"]) { 
      NSArray *pictures = [colour objectForKey:@"pictures"]; 
      for (NSDictionary *picture in pictures) { 
       NSString *pictureName = [picture objectForKey:@"name"]; 
       NSLog(@"Picture name: %@", pictureName); 
      } 
     } 
    } 
} 

- (NSDictionary *)JSONFromFile 
{ 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"colors" ofType:@"json"]; 
    NSData *data = [NSData dataWithContentsOfFile:path]; 
    return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 
} 
+0

ありがとうございました!これはまさに私が必要としていたものです。あなたは人生の救世主です! :) – Ikeaner