busque los valores en array en iPhone sdk

Tengo la matriz como:

( { id=1; Title="AAAA"; period_id=1; }, { id=2; Title="BBBB"; period_id=2; }, { id=3; Title="CCCC"; period_id=2; }, { id=4; Title="DDDD"; period_id=2; }, { id=5; Title="EEEE"; period_id=3; }, ) 

Pregunta : ¿Cómo puedo saber que Period_id=2 es múltiple en la matriz?

Ayúdame a resolver esto.

Gracias,

Hay muchas maneras de hacerlo, algunos de ellos están aquí …

UN:

 NSPnetworkingicate *pnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"period_id == %@", @"2"]; NSArray *newArray = [array filtenetworkingArrayUsingPnetworkingicate:pnetworkingicate]; NSLog(@"%d", [newArray count]); 

SEGUNDO:

 NSMutableArray *newArray = [[NSMutableArray alloc] init]; for (id obj in array) { if([obj[@"period_id"] isEqualToString:@"2"]){ [newArray addObject:obj]; } } NSLog(@"%d", [newArray count]); 

DO:

 NSArray *allIds = [array valueForKey:@"period_id"]; NSCountedSet *set = [[NSCountedSet alloc] initWithArray:allIds]; for (id item in set) { NSLog(@"period_id=%@, Count=%d", item,[set countForObject:item]); } 

RE:

 NSArray *allIds = [array valueForKey:@"period_id"]; __block NSMutableArray *newArray = [[NSMutableArray alloc] init]; NSString *valueToCheck = @"2"; [allIds enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { if([obj isEqualToString:valueToCheck]) [newArray addObject:obj]; }]; NSLog(@"%d", [newArray count]); 

MI:

 NSIndexSet *indexes = [array indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) { return [[obj objectForKey:@"period_id"] isEqualToString:@"2"]; }]; NSArray *newArray = [array objectsAtIndexes:indexes]; NSLog(@"%d", [newArray count]); 

testing así,

  NSIndexSet *indices = [questionSections indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) { return [[obj objectForKey:@"period_id"] isEqualToString:@"2"]; }]; NSArray *filtenetworking = [questionSections objectsAtIndexes:indices]; NSLog(@"duplictae:%d\n %@",[indices count],filtenetworking); 

O / P: –

 duplicate: 3 ( { name = bbbb; "period_id" = 2; }, { name = ccccc; "period_id" = 2; }, { name = ddddd; "period_id" = 2; } ) 

si la matriz está orderada, como parece en su caso, solo verifique si el siguiente elemento tiene el mismo valor que este

 for(int i = 0; i < array.size() - 1; i++) { if (array[i].id == array[i + 1].id) { // Duplicate } } 

si solo quieres saber sobre id = 2

 int idCount = 0; for(int i = 0; i < array.size() - 1; i++) { if (array[i].id == 2) { idCount++; } } 

si también quieres saber la location

 int idCount = 0; int idarr[array.size()]; for(int i = 0; i < array.size() - 1; i++) { if (array[i].id == 2) { idarr[idCount++] = i; } } 

Creo que esta es una respuesta de JSON de lo que recojo. Sí, puedes get el period_id . Agregue todos los period_id's en un NSMutableArray .

Luego, simplemente busque el period_id de dentro de esta matriz para que los valores de period_id sean iguales. Obtendrá el índice en el que los period_id son iguales.

  NSSet *uniqueElements = [NSSet setWithArray:myArray]; for(id element in uniqueElements) { // iterate here } 

También puede usar NSPnetworkingicate para verificar duplicates.

Pruebe este ejemplo:

 NSPnetworkingicate *testPnetworkingicate = [NSPnetworkingicate pnetworkingicateWithFormat:@"period_id.intValue == %d",value]; NSMutableArray *data = [[NSMutableArray alloc] init]; NSArray *testArray= [yourArray filtenetworkingArrayUsingPnetworkingicate:testPnetworkingicate]; NSLog(@"duplicate:%d",[testArray count]);