我有一个viewcontroller,(比如ViewcontrollerA)。它上面有tableView和tableViewCells。
tableView有三个部分(section0,section1,section2)。
Section0有两行,
2.section1有9个和
3.section2有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;
}
答案 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;
}