从nsdictionary填充uitableview

时间:2013-10-19 12:02:05

标签: ios json uitableview nsdictionary

我有一个来自json的nsdictionary,它响应:

({
    email = "something@gmail.com";
    name = "User1";
},
    {
    email = "something2@gmail.com";
    name = "user2";
})

这是我在de .m文件中的代码:

   - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{



    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response;

    int errorCode = httpResponse.statusCode;

    NSString *fileMIMEType = [[httpResponse MIMEType] lowercaseString];

    NSLog(@"response is %d, %@", errorCode, fileMIMEType);

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

    //NSLog(@"data is %@", data);

    NSString *myString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    //NSLog(@"string is %@", myString);
    NSError *e = nil;

    usersDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e];

    NSLog(@"dictionary is %@", usersDictionary);
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {



    // inform the user

    NSLog(@"Connection failed! Error - %@ %@",

          [error localizedDescription],

          [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

   NombreUsuario = [[NSMutableArray alloc] initWithCapacity:[usersDictionary count]];


}

我用它来返回部分中的行数:

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

但我没有意识到如何将这对数据电子邮件,名称放入一个tableview,其中每个单元格必须显示名称的主标签和电子邮件的副标题。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我将回答我自己的问题,以便将来参考谁可能需要它。

首先,我必须将json响应存储在NSMutableArray而不是字典中。

由于我有一系列字典,我有两个级别的信息,我试图将其分解为新对象,但这不是正确的方法,因此访问第二级我必须导航到它:< / p>

cell.textLabel.text = [[NombreUsuario objectAtIndex:indexPath.row]objectForKey:@"name"];

使用[NombreUsuario objectAtIndex:indexPath.row],我访问第一级信息,然后使用objectForKey:@“name”,我获得与键“name”匹配的所有值。

对于细节标签文字是相同的:

cell.detailTextLabel.text = [[NombreUsuario objectAtIndex:indexPath.row]objectForKey:@"email"];

感谢大家的帮助。

答案 1 :(得分:0)

我不会为您编写代码,但您需要了解如何实现UITableViewDataSource。特别是,您要做的事情将在 - tableView:cellForRowAtIndexPath:方法中。互联网上有成千上万的好例子。