-1

我正在将 Json 加载到 NSDictionary 中,输出如下。我只是不确定如何解析它,所以我可以将它插入 UItableview,所以第一行会说 6 street 10950,第二行会说 Munch lane 11730 等等。谢谢您的帮助。

(
    {
    "address_line1" = "6 street";
    "zipcode" = 10950;
},
    {
    "address_line1" = "Munch lane";
    "zipcode" = 11730;
}
)
4

2 回答 2

0

假设您通过 NSJSONSerialization 之类的 json 解析器运行它,您现在拥有一个 NSDictionarys 的 NSArray。cellForRowAtIndexPath在你的 UITableView 或 UITableViewController 类中实现 UITableViewDatasource 方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString     *CellIdentifier = @"Cell";
    UITableViewCell     *cell = nil;
    NSDictionary        *addressDictionary = nil;

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }
    if ([indexPath row] <= [[self jsonAddressArray] count]){
        rowDictionary = [[self jsonAddressArray] objectAtIndex:[indexPath row]];
        if (rowDictionary != nil){
            cell.textLabel.text = [rowDictionary objectForKey:@"address_line1"];
            cell.detailTextLabel.text = [rowDictionary objectForKey:@"zipcode"];
        }
    }
    return cell;
}

(这假设您将属性“jsonAddressArray”设置为解析的 JSON 数据。)

这会将地址行 1 放在单元格的第一行,将邮政编码放在单元格的第二行。如果您希望两者都在一行,请将单元格样式更改为UITableViewCellStyleDefault,合并两个字符串并设置cell.textLabel.text为该字符串。

于 2012-06-25T00:04:58.123 回答
0

一开始,这个 json 应该被加载到一个 NSArray 中,之后使用起来会更容易。

然后,您可以像在 tableview 数据源中那样简单地加载它:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return myArray.count;
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    }

    NSDictionary *cellDict = [myArray objectAtIndex:indexPath.row];

    cell.textLabel.text = [cellDict objectForKey:@"address_line1"];
    cell.detailTextLabel.text = [cellDict objectForKey:@"zipcode"];

    return cell;
}
于 2012-06-24T23:59:35.253 回答