Два дальнейших пункта.
Бесполезность synchronize
постепенно росла в версиях iOS. Раньше было важно; тогда желательно; тогда ненужно. Я не могу дать вам точную временную шкалу, но многое зависит от того, как далеко в iOS вы хотите, чтобы ваше приложение работало.
Если вы попытаетесь протестировать некоторые из этих вещей в Xcode, будьте осторожны. До iOS 11 включительно, synchronize
не записывает полностью на диск, а только помещает данные в очередь «отложенной записи». Нажатие кнопки «Стоп» в XCode (или нажатие кнопки «Выполнить» и разрешение XCode автоматически остановить предыдущее запущенное приложение) выключает все внезапно, более резко, чем все, что может сделать пользователь, и ленивые записи не записываются, а теряются. Это сбивает с толку, пока вы отдыхаете! Я подал отчет об этом, и Apple мне сказали, что (как сказал бы Microfot) «Такое поведение предусмотрено».
Но для ясности: этот второй пункт не представляет проблемы для реальных приложений в реальной среде, только когда вы пытаетесь протестировать сценарии «сохранить и перезапустить». Ожидание 5-10 секунд, по-видимому, достаточно долго для сброшенных данных, чтобы они попали на диск.