Ios 从字典数组中获取字典值的范围

Ios 从字典数组中获取字典值的范围,ios,objective-c,nsmutablearray,nsmutabledictionary,Ios,Objective C,Nsmutablearray,Nsmutabledictionary,在我的JSON响应中,我需要解析字典数组中的一系列值。 这是我的回答 “List”: [ { "event_desc": "On" }, { "event_desc": “Go” }, { "event_desc": “Start” }, { "event_desc": "Off” }, { "eve

在我的JSON响应中,我需要解析字典数组中的一系列值。 这是我的回答

“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"
      }
]
这里我想按“开”和“关”的范围来分隔这些值 就是


帮帮我,提前谢谢你可以这样做

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);
NSArray*yourrar;//有问题的帖子
NSMutableArray*resultArr=[[NSMutableArray alloc]init];
NSMutableArray*tempArr=[[NSMutableArray alloc]init];
布尔标志=否;
for(int i=0;i
这是一种非常笨拙的数据表示方式。最好将JSON重新构造为更好地表示信息含义的内容。这是一个笨拙的数据结构,但它是有序的。是的,我意识到了。首先获取数组中的所有值。然后对于(NSString*string in arr){如果([string isEqualToString:@“On”]){//添加到数组而([string isEqualToString:@“Off”]){//添加到数组}//创建新数组并重复}检查我的答案,它将在一个数组中返回您想要的数组!!是的,正如@duncac所说,这是一个笨拙的结构!如果可能的话,你应该改变它!如果你必须保持现状,那么你可以像我在回答中提到的那样管理它!eventList只给出空的应该有一些小错误,但是逻辑应该可以工作。你能把你试过的代码和JSON一起粘贴吗。我很快就能让它工作。
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);
    NSArray *parsedJson = nil; //Should have your parsed json list array here
    NSMutableArray *eventList = [@[] mutableCopy]; // This will be your final array of list events
    NSMutableArray *eventEntry = [@[] mutableCopy]; // Will contain each list event from event_desc On to event_desc Off

    for (NSDictionary *event in parsedJson) {

        if ([event[@"event_desc"] isEqualToString:@"On"]) {
            [eventEntry removeAllObjects];
            [eventList addObject:eventEntry];

        }else if(([event[@"event_desc"] isEqualToString:@"Off"]) ){
            [eventEntry addObject:event];
            [eventList addObject:eventEntry]; // Add each eventEntry to main array as its complete.

        }else{
            [eventEntry addObject:event];

        }
    }

    NSLog(@"Result eventList array : %@",eventList);