根据目标c中获得的json隐藏行和部分

时间:2017-04-25 05:13:35

标签: ios objective-c json uitableview

我有一个viewcontroller,(比如ViewcontrollerA)。它上面有tableView和tableViewCells。

tableView有三个部分(section0,section1,section2)。

  1. Section0有两行,

    2.section1有9个和

    3.section2有2行。

  2. 我有一个json如下:

      {"Error": null,
            "isModifiable":1,
            "Check":1,
            "Data": [{
                      "section": 1,
                      "row": 2
                      }, {
                      "section": 1,
                      "row": 3
                      }, {
                      "section": 1,
                      "row": 5
                      }, {
                      "section": 0,
                      "row": 1
                      }, {
                      "section": 2,
                      "row": 0
                      }]} 
    

    这里,在这个json部分中,给出了要修改的行。但是我只能访问数组[object at indexpath:0]

    但是,实际上我想要一起访问数组中的所有字典。以下是我使用过的代码。请仔细阅读并建议更正。

    提前致谢!

    这里是我的代码:

      - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
        {
            NSDictionary * values=[self getTheRowsAndSectionDetailsFromJson];
            NSArray *tasks=[values objectForKey:@"Data"];
            NSDictionary* taskDic=[tasks objectAtIndex:0];
            NSInteger  rows=[[taskDic valueForKey:@"row"]intValue];
            NSLog(@"%ld",(long)rows);
            NSInteger  section=[[taskDic valueForKey:@"section"]intValue];
            NSLog(@"%ld",(long)section);
    
    
            if([[values objectForKey:@"isModifiable"]boolValue])
            {
                if((indexPath.row==rows
                    )&&indexPath.section==section)
                {
                    return 0.0;
                }
                else
    
                    return 39.6;
            }
            else
                return 39.6;
    
        }
    
        -(NSDictionary*)getTheRowsAndSectionDetailsFromJson
        {
            NSString *filePath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"json"];
            NSData *data = [NSData dataWithContentsOfFile:filePath];
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            NSLog(@%@",dict);
            return dict;
    
        }
    

1 个答案:

答案 0 :(得分:0)

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(section == %@)",@(indexPath.section)];
NSArray *filteredArray = [[dataArray filteredArrayUsingPredicate:predicate] valueForKeyPath:@"row"];
if([filteredArray containsObject:[NSNumber numberWithInteger:@(indexPath.row)]]){
    return 0.0;
}