无法从我的JSON中获取所有数据

时间:2013-02-21 23:01:06

标签: iphone json tableview master-detail

我正在将JSON解析为我的MASTER-DETAIL应用程序,并且在“深入挖掘”时遇到问题。进入JSON。我无法在detailTableView中获取数据。 在我的detailTableView中,我想要的名称是,在这种情况下,酒店/ pousadas。

请参阅我的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"
       }
    ]
  }

]

tableView in detailTableView.m:

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

提前致谢!

1 个答案:

答案 0 :(得分: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"]];