我正在尝试加载以下JSON文件。。。
{
"divisions" : [
{
"divName" : "Division Name",
"divList" : [
{
"itemName" : "First item",
"itemVisible" : "1"
},
{
"itemName" : "Second item",
"itemVisible" : "0"
},
{
"itemName" : "Third item",
"itemVisible" : "0"
}
]
}
]
}
转换为具有节的UITableView("divName"作为标题ForHeaderInSection,"itemName"在cell.textLabel.text中),这不是问题。我遇到的问题是根据itemVisible属性的值过滤单元格中的数据——"0"表示隐藏,"1"表示显示。我的最佳猜测是应该使用NSPredcate来完成,例如。。。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemVisible == %@", @"1"];
NSArray *filteredArray = [randomArrayNameOfItems filteredArrayUsingPredicate:predicate];
但我不知道如何将其与一个相当复杂的JSON对象结合起来。
如有任何帮助或建议,我们将不胜感激。
为什么不将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;
}