0

JSONをMASTER-DETAILアプリに解析していて、JSONを「深く掘り下げる」ときに問題が発生します。でデータを取得できませんdetailTableView。私detailTableViewの場合、この場合はホテル/ポウサダの名前を付けたいと思います。

私のJSONとdetailTableView.mを参照してください。

[

    {
      "title": "Where to stay",
      "pousadas": 
     [
        {
            "beach": "Arrastão",
            "name": "Hotel Arrastão",
            "address": "Avenida Dr. Manoel Hipólito Rego 2097",
            "phone": "+55(12)3862-0099",
            "Email": "hotelarrastao_reserva@hotmail.com",
            "image": "test.jpg",
            "latitude": "-23.753355",
            "longitude": "-45.401946"
       }
    ]
  }

]

そして、detailTableView.mのtableView:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return self.stayGuide.count;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"detailCellStay"];

これが私の試練です:

    NSString *pous = [self.stayGuide valueForKey:@"name"];

    NSLog([self.stayGuide valueForKey:@"name"]);

    cell.textLabel.text = pous;



    return cell;
}

前もって感謝します!

4

1 に答える 1

2

JSONを間違って読んでいます!あなたのデータを見てみましょう:

[ <---- array
    { <---- dictionary
        "title": "Where to stay",
        "pousadas": [ <---- array
            { <---- dictionary
                "beach": "Arrastão",
                "name": "Hotel Arrastão",
                "address": "Avenida Dr. Manoel Hipólito Rego 2097",
                "phone": "+55(12)3862-0099",
                "Email": "hotelarrastao_reserva@hotmail.com",
                "image": "test.jpg",
                "latitude": "-23.753355",
                "longitude": "-45.401946"
            }
        ]
    }
]

「stayGuide」プロパティ(NSArrayタイプである必要があります)にデータが格納されているとすると、次のように初期ディクショナリにアクセスできます。

NSDictionary *initialDictionary = [self stayGuide][0]; // access using new Objective-C literals

これで、「pousadas」配列など、ここでさまざまな値にアクセスできます。

NSArray *pousadas = initialDictionary[@"pousadas"];

これで、最初の辞書で行ったように、pousadas配列の最初のオブジェクトにアクセスできます。

NSDictionary *dictionary = pousadas[0];

最後に、最初のpousadas辞書内のこれらのキーのいくつかにアクセスできます。

NSString *beach = dictionary[@"beach"];
NSString *name = dictionary[@"name"];
NSString *address = dictionary[@"address"];

NSLog(@"Beach: %@, Name: %@, Address: %@"beach,name,address);

ただし、将来的には、stayGuideプロパティをpousadas配列と同じにする必要があります。次のように設定できます(initialJSONArrayは開始JSONデータです)。

[self setStayGuide:initialJSONArray[0][@"pousadas"]];
于 2013-02-21T23:16:02.207 に答える