데이터가 많은 앱이 있으며 Xcode의 시각적 매핑 모델과 정리 코드의 NSEntityMigrationPolicy 구현을 사용하여 모든 CoreData 마이그레이션 작업을 구현했습니다. 실제로 실제 장치에서의 마이그레이션은 실제로 길기 때문에 완료하는 데 최대 5 분이 소요될 수 있습니다.자동 마이그레이션에서 NSMigrationManager에 대한 참조를 얻는 가장 빠른 방법은 무엇입니까?
이 일이 발생하면 사용자에게 피드백을주고 NSMigrationManager에서 KVO의 migrationProgress
속성을 원합니다. 그 트릭은 addPersistentStoreWithType:configuration:URL:options:error:
은 마이그레이션이 필요하다고 판단되는 경우 NSMigrationManager에 대한 참조를 가져 오지 못한다는 것입니다.
내 관찰 NCDntityMigrationPolicy에 beginEntityMapping:manager:error:
콜백을 구현하여 NSMigrationManager에 대한 참조를 얻을 수 있음을 발견했습니다.
유일한 문제는, 당신은 beginEntityMapping
호출에 도착하는 시간으로 진행 또한,이 30 %가 일반적으로 전체 시간이 addPersistentStoreWithType
에 호출 내에서 소비에 대한 절반을 대표하는 약 30 % (최대 것으로 보인다이다 그래서 실제로 보이는 것보다 훨씬 더 나쁜 것입니다).
NSMigrationManager에 대한 참조를 좀 더 일찍 처리하기 위해 사용할 수있는 트릭을 알고있는 사람은 누구나 사용자에게 피드백을 제공 할 수있는 기회의 첫 3 분의 1을 놓치지 않아도됩니다. 왜 앱이 시작하기까지 오랜 시간이 걸리는지?
미리 도움을 청하십시오!
가벼운 마이그레이션을 통해 실제로 작동합니까? 추측 된 매핑을 사용하여 "수동"마이그레이션을 구현했으며, 사실상 가벼운 마이그레이션이지만, 진행 상황은 항상 유지됩니다. 0.0. (성공적인 mi 후에도 gration) –
iOS 6에 대해서는 확실하지 않지만 iOS 5 및 이전 버전에서는 예를 들어 가벼운 마이그레이션으로 진행 상황에 대한 피드백을받지 못하는 것 같습니다. 꽤 나쁘고 최선의 방법은 사전에 프로파일 링을하고 DB의 크기를 기반으로 한 추정치를 얻은 다음 진행 상황을 시뮬레이션하여 다소 퍼지하는 것입니다. 그러나 그것은 실제 진전이 아니며 단지 예측 일뿐입니다. – glenc
iOS6에서 테스트를 마쳤으며 NSMigrationManager를 사용하여 수동으로 마이그레이션을 트리거하면 "migrationProgress"는 항상 0.0입니다. "-addPersistentStoreWithType : ..."에 대해서는 확실하지 않지만이 경우 마이그레이션 관리자에 대한 참조를 실제로 얻을 수 없다는 것을 지적했습니다. –