Tratando de mantener sincronizados dos matrices es sólo buscar problemas. Se puede hacer, por supuesto, pero cada vez que modifique una matriz, debe recordar hacer un cambio correspondiente a la otra. Hágase un favor y evite toda esa clase de errores repensando la forma en que está almacenando datos.
En este caso, tiene un par {persona, booleano}. Una opción es almacenar cada par como un diccionario, y luego mantener una matriz de esos diccionarios. Este sería un plan particularmente bueno si puede ampliar el número de datos más allá de los dos que tiene. Otra opción sería usar un diccionario donde las claves son nombres de personas y los valores son sus valores de sí/no. Esto hace que la respuesta a su pregunta muy simple:
NSString *yesOrNo = [personDictionary objectForKey:personName];
Volviendo a su pregunta original, en el que todavía tiene las dos matrices, la más fácil que hay que hacer es iterar sobre la matriz persona hasta que encuentre el persona que está buscando, obtener el índice de ese nombre, y luego mirar hacia arriba el valor correspondiente en los sí/no matriz:
for (person in peopleArray) {
if ([person isEqualToString:thePersonYoureLookingFor]) {
yesNoValue = [yesNoArray objectAtIndex:[peopleArray indexOfObject:person];
break;
}
}
eso está bien si el número de personas en la lista no es demasiado grande . Si la lista puede ser grande, querrá mantener ordenada la matriz de persona para que pueda hacer una búsqueda binaria. El problema allí, sin embargo, es que está sí/no, la matriz está separada, por lo que ordenar el arrayArray mientras se mantiene la matriz de sí/no en el orden correcto se vuelve complicado.
¿Mantiene la matriz de nombres ordenada o no? –
@Bavarious Sin clasificar, pero lo genera un servidor, por lo que no hay duplicados. PengOne respondió mi pregunta sin embargo. Estaba buscando el método indexOfObject. – Preston