簡體   English   中英

使用NSPredicate從復雜的JSON資源過濾NSArray

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM