Попытка синхронизировать два массива просто напрашивается на неприятности.Конечно, это можно сделать, но всякий раз, когда вы изменяете один массив, вы должны помнить, что нужно внести соответствующие изменения в другой.Сделайте себе одолжение и избегайте всего этого класса ошибок, переосмыслив способ хранения данных.
В этом случае у вас есть пара {person, boolean}.Один из вариантов - сохранить каждую пару в качестве словаря, а затем сохранить массив этих словарей.Это был бы особенно хороший план, если бы вы могли расширить количество фрагментов данных за пределы двух имеющихся у вас.Другой вариант - просто использовать словарь, в котором ключи - это имена людей, а значения - ваши значения yes / no.Это делает ответ на ваш вопрос очень простым:
NSString *yesOrNo = [personDictionary objectForKey:personName];
Возвращаясь к исходному вопросу, где у вас все еще есть два массива, самый простой , что нужно сделать, это перебратьмассив person, пока вы не найдете нужного человека, получите индекс этого имени, а затем найдите соответствующее значение в массиве yes / no:
for (person in peopleArray) {
if ([person isEqualToString:thePersonYoureLookingFor]) {
yesNoValue = [yesNoArray objectAtIndex:[peopleArray indexOfObject:person];
break;
}
}
Это нормально, если количество людейв списке не слишком большой.Если список может быть большим, тогда вы захотите сохранить отсортированный массив, чтобы вы могли выполнять бинарный поиск.Но проблема в том, что массив yes / no является отдельным, поэтому сортировка personArray с сохранением массива yes / no в правильном порядке становится сложной.