I'd an NSArray
with some dictionaries.which has some keys and values.which I'm showing in a tableview. I'd put the section header title is one of the value of a key in that dictionary i.e. like ddDate value. The problem is the same ddDate values needs to come under the same section. So I need to create my array according to that.
responseDict (
{
xx = 16;
yy = 17;
aa = 0;
bb = 6;
cc = 2016;
ddDate = "17-06-2016";
},
{
xx = 17;
yy = 17;
aa = 0;
bb = 6;
cc = 2016;
ddDate = "17-06-2016";
},
{
xx = 18;
yy = 17;
aa = 0;
bb = 6;
cc = 2016;
ddDate = "18-06-2016";
}
ie date is the section title. And those who had the same ddDate values under one section. Can anybody guide me how I can achieve this?
Your goal is to build two data structures; An array of ddDate
values; this will be your section information and a dictionary of arrays, keyed by the ddDate
values; this will be your row data.
@property (strong, nonatomic) NSArray *sections;
@property (strong, nonatomic) NSDictionary *rows;
- (void)processJSONData:(NSArray *)inputArray {
NSMutableDictionary *extractedData = [NSMutableDictionary new];
for (NSDictionary *dict in inputArray) {
NSString *ddDate = dict["ddDate"];
NSMutableArray *rowArray = extractedData[ddDate];
if (rowArray == nil) {
rowArray = [NSMutableArray new];
extractedData[ddDate] = rowArray;
}
[rowArray addObject:dict];
}
self.sections = [extractedData allKeys];
self.rows = [NSDictionary dictionaryWithDictionary:extractedData];
}
You might like to sort the self.sections
array.
The number of sections is self.sections.count
and the number of rows in a section are self.rows[self.sections[indexPath.section]].count