0

我正在尝试加载以下 JSON 文件...

{
    "divisions" : [
        {
            "divName" : "Division Name",
            "divList" : [
                {
                    "itemName" : "First item",
                    "itemVisible" : "1"
                },
                {
                    "itemName" : "Second item",
                    "itemVisible" : "0"
                },
                {
                    "itemName" : "Third item",
                    "itemVisible" : "0"
                }
            ]
        }
    ]
}

...进入带有部分的 UITableView(“divName”作为 titleForHeaderInSection,“itemName”在 cell.textLabel.text 中),这不是问题。我遇到的问题是根据 itemVisible 属性的值过滤单元格中的数据-“0”表示隐藏,“1”表示显示。我最好的猜测是它应该使用 NSPredicate 来完成,例如......

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemVisible == %@", @"1"];
NSArray *filteredArray = [randomArrayNameOfItems filteredArrayUsingPredicate:predicate];

...但我不知道如何将它与一个相当复杂的 JSON 对象结合起来。

任何帮助或建议将不胜感激。

4

1 回答 1

2

为什么不将 json 字符串解码为对象?

NSError *e;
NSDictionary object = [NSJSONSerialization JSONObjectWithData:op.responseData options:NSJSONReadingMutableContainers error:&e];

if ( e )
{
    TLog(@"%@ %@",[e localizedDescription],op.responseString);
}

if ( [object isKindOfClass:[NSDictionary class]])
{
    NSArray *itemArray = object[@"divisions"][@"divList"]
    //filter here 
}

如果您的情况,您可以简单地将不可见单元格的高度设置为 0

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //if the cell. itemVisible == 0  , return 0.0f;
}
于 2013-06-25T08:50:51.817 回答