在UITableView中显示JSON数据

时间:2012-05-21 00:36:57

标签: iphone ios xcode json uitableview

我的应用程序正在加载一些JSON的数据并且一切正常,但是当我尝试在我的UITableView单元格中显示这些数据时,没有任何反应。我的代码如下:

获取数据(JSON):

-(void)fetchedData:(NSData *)responseData {

    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
    NSArray* latestLoans = [json objectForKey:@"loans"];

    testeDictionary = [latestLoans objectAtIndex:0];

    testeLabel.text = [NSString stringWithFormat:@"%@",[testeDictionary objectForKey:@"id"]];

    testeString = [testeDictionary objectForKey:@"username"];
    [miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];


}

UITableView:

-(UITableViewCell *)tableView:(UITableView *)myTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{


    UITableViewCell *cell = (UITableViewCell *)[self.settingsTableView dequeueReusableCellWithIdentifier:@"CellD"];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellD" owner:self options:nil];
        cell = (UITableViewCell *)[nib objectAtIndex:0];
    }


    if ([indexPath row] == 0) {

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CellA" owner:self options:nil];
        cell = (UITableViewCell *)[nib objectAtIndex:0];


        NSDictionary *itemAtIndex = (NSDictionary *)[miArray objectAtIndex:indexPath.row];


        UILabel *usernameString = (UILabel *)[cell viewWithTag:1];
        usernameString.text = [itemAtIndex objectForKey:@"id"]; <== MUST DISPLAY JSON VALUE


    }

    return cell;

}

更清楚的是,我需要在[testeDictionary objectForKey:@"id"]上显示usernameString.text

1 个答案:

答案 0 :(得分:1)

您没有存储ID

[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];

我想你想要做的就是这样的事情

NSString *idString = [NSString stringWithFormat:@"%@", [testeDictionary objectForKey:@"id"]];
[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                                          testeString, @"username",
                                          idString, @"id", 
                                          nil]];

编辑(解释)

在您的方法fetchedData:中,您提取ID并将某个标签的文本设置为ID。

testeLabel.text = [NSString stringWithFormat:@"%@",[testeDictionary objectForKey:@"id"]];

之后你忘记了id。然后,您继续提取用户名,并创建一个包含用户名的字典,并将该字典添加到名为miArray的数组中。

[miArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:testeString,@"username",nil]];

请注意,您未指定名为“id”的任何键。

稍后,您从miArray获取字典。这个词典是你用一个键创建的词典,即“用户名”。您告诉它获取密钥“id”的对象,但由于您从未指定该密钥,因此您获得nil值。

从底线开始,尝试我的解决方案。