Я думаю, что у вас здесь неправильный подход.
Не видя большую часть вашего другого кода, я не могу сказать слишком много, однако вот как CoreData должен работать:
Вы обновляете любые изменения в CoreData FIRST, а затем CoreData уведомляет делегата / наблюдателя о том, что данные должны быть перезагружены, и именно здесь вы обновляете кэш объектов и уведомляете об обновлении табличного представления.
Поэтому не обновляйте массив данных самостоятельно, вы просто кэшируете его из CoreData.