Я думаю, что проблема в том, что iOS (на устройстве) может использовать немного другую оптимизацию, чем где-либо в эмуляторе, либо в NSString, либо в NSArray.Это предположение.
indexOfObjectIdenticalTo: возвращает индекс первого объекта, который имеет тот же адрес памяти, что и объект, который вы передаете. На телефоне он, кажется, повторно использовал идентичные строковые объекты в вашем первом массиве при построениифильтруемый массив (возможно, даже при построении firstArray), поэтому вы каждый раз получаете одно и то же значение индекса.
Лучшим решением было бы построить отфильтрованный массив в виде массива словарей, сохраняя значения из правильных индексов firstArray и secondArray в этой точке.Затем вы можете использовать эти значения непосредственно при заполнении ячейки вместо повторного поиска в обоих массивах.Это также должно иметь некоторые преимущества в производительности.
Этого можно добиться, используя следующий код.Сначала, внутри вашего цикла, когда вы создаете фильтрованный массив, вместо добавления объекта из firstarray, сделайте следующее:
[self.filteredArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:[firstarray objectAtIndex:idx],@"english",[secondarray objectAtIndex:idx],@"translated",nil];
Затем, в вашем cellForRowAtIndexPath, получите две переменные содержимого:
NSDictionary *rowData = [self.filteredarray objectAtIndex:row];
contentForThisRow = [rowData objectForKey:@"english"];
contentForThisRow2 = [rowData objectForKey:@"translated"];
Лучшим решением для и даже было бы, в первую очередь, хранить ваши данные, а не пытаться синхронизировать два отдельных массива.Я полагаю, что если вы хотите добавить или изменить что-либо в ваших двух отдельных файлах, вы можете быстро вывести их из строя.Тем не менее, я чувствую, что сделал достаточно для дня ...