[英]Filtering NSArray from a complex JSON resource using NSPredicate
我正在嘗試加載以下JSON文件...
{
"divisions" : [
{
"divName" : "Division Name",
"divList" : [
{
"itemName" : "First item",
"itemVisible" : "1"
},
{
"itemName" : "Second item",
"itemVisible" : "0"
},
{
"itemName" : "Third item",
"itemVisible" : "0"
}
]
}
]
}
...進入帶有節的UITableView(“divName”作為titleForHeaderInSection,在cell.textLabel.text中為“itemName”),這不是問題。 我遇到的問題是根據itemVisible屬性的值過濾單元格中的數據 - 隱藏“0”,顯示“1”。 我最好的猜測是應該使用NSPredicate來完成,例如......
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.