TL; DR: сохранять только ОДИН РАЗ в конце.
Здесь необходимо учитывать несколько моментов:
Прежде всего: операции ReplaceItemValue - это чисто модификации к документу в памяти. Они не запускают какие-либо операции с базой данных (или запись на диск). С другой стороны, операция «Сохранить» запускает операции с базой данных. Даже без учета влияния на производительность это должно быть достаточной причиной, чтобы сэкономить как можно более экономно.
Но теперь давайте дополнительно рассмотрим побочные эффекты решения, которое сохраняется после каждого изменения элемента:
Ваш код может переносить документ из одного состояния в другое. Чтобы полностью выполнить эту передачу, обычно ВСЕ элементы должны быть переведены в новое состояние в документе.
Код НИКОГДА не 100% без ошибок. И даже если это так: код может потерпеть неудачу по любой причине в середине выполнения.
Независимо от причины остановки вашего кода после первых 5 элементов: если вы сохраняете каждое отдельное изменение, ваш документ будет в несогласованном состоянии, и вам нужно будет написать код для отката изменений или начать там, где Оставьте код и внесите изменения.
Лучше сделайте ВСЕ ваши преобразования, а затем сохраните в самом конце, когда все будет сделано и согласованно.
Единственным исключением для этого является написание журнальных документов, в которые вы добавляете строки добавления прогресса в журнал. Если вы хотите наблюдать за прогрессом из другого места, то сохранение после каждой записи в журнале будет правильным решением. Но есть не так много других сценариев ios, где это было бы правдой.