У меня есть приложение, насыщенное данными, и я реализовал все свои средства миграции CoreData, используя модели визуального отображения в реализациях XCode и NSEntityMigrationPolicy для кода очистки. Оказывается, что миграции на реальном устройстве действительно длительные, иногда для их завершения требуется до пяти минут.
Мне действительно нужно дать отзыв пользователю, когда это происходит, и хочу, чтобы KVO атрибут migrationProgress
на NSMigrationManager. Хитрость заключается в том, что addPersistentStoreWithType:configuration:URL:options:error:
не позволяет получить ссылку на NSMigrationManager в случае, если он считает миграцию необходимой.
Я обнаружил, что могу получить ссылку на NSMigrationManager, реализовав обратный вызов beginEntityMapping:manager:error:
в моем пользовательском NSEntityMigrationPolicy, начав с наблюдения там.
Единственная проблема заключается в том, что к тому времени, когда вы получаете вызов beginEntityMapping
, прогресс, кажется, достигает примерно 30% (кроме того, эти 30% обычно составляют половину общего времени, проведенного внутри вызов addPersistentStoreWithType
, так что на самом деле это даже хуже, чем кажется).
Кто-нибудь еще знает о каких-либо хитростях, которые можно использовать для получения ссылки на NSMigrationManager чуть раньше в процессе, чтобы мне не пришлось упускать первую треть возможности дать отзыв пользователю о почему приложение так долго запускается?
Заранее спасибо за любую помощь!