Search code examples
iosobjective-cnsmutablearraynsmutabledictionary

get the range of dictionary values from Array of dictionary


In my response JSON i need to parse a range of values from a array of dictionary. Here is my response,

“List”: [
      {
         "event_desc": "On"
      },
      {
         "event_desc": “Go”
      },
      {
         "event_desc": “Start”
      },
      {
         "event_desc": "Off”
      },
      {
         "event_desc": “Rework”
      },
      {
         "event_desc": "On"
      },
      {
         "event_desc": “Start”
      },
      {
         "event_desc": "Off”
      },
      {
         "event_desc": “Swipe”
      },
      {
         "event_desc": "On"
      },
      {
         "event_desc": “Work”
      },
      {
         "event_desc": “Repair”
      },
      {
         "event_desc": “Off”
      },
      {
         "event_desc": "On"
      }
]

here i want to separate the values by range of "On" & "Off" that is

list1=[ {event_desc:On},{event_desc:Go},{event_desc:Start},{event_desc:Off}]
list2=[{event_desc:On},{event_desc:Start},{event_desc:Off}]
list3= [{event_desc:On},{event_desc:Work},{event_desc:Repair},{event_desc:Off}]

Help me, Thanks in advance


Solution

  • You can do something like,

    NSArray *yourArr;   // posted in question
    NSMutableArray *resultArr = [[NSMutableArray alloc]init];
    NSMutableArray *tempArr = [[NSMutableArray alloc]init];
    BOOL flag = NO;
    for (int i = 0; i < yourArr.count; i++) {
        NSDictionary *dic = [yourArr objectAtIndex:i];
        if ([[dic objectForKey:@"event_desc"] isEqualToString:@"On"]) {
            flag = YES;
        }
        if (flag) {
            [tempArr addObject:dic];
        }
        if ([[dic objectForKey:@"event_desc"] isEqualToString:@"Off"]) {
            flag = NO;
            [resultArr addObject:[tempArr mutableCopy]];
            [tempArr removeAllObjects];
        }
    }
    NSLog(@"your result array : %@",resultArr);