2

私はデータの多いアプリを持っており、XCode のビジュアル マッピング モデルとクリーンアップ コードの NSEntityMigrationPolicy 実装を使用して、すべての CoreData 移行機能を実装しました。結局のところ、実際のデバイスでの移行は非常に時間がかかり、完了までに最大 5 分かかることもあります。

これが進行しているときにユーザーにフィードバックを提供する必要がありmigrationProgress、NSMigrationManager の属性を KVO したいと考えています。トリックはaddPersistentStoreWithType:configuration:URL:options:error:、移行が必要であると見なされた場合に、NSMigrationManager への参照を取得できないようにすることです。

beginEntityMapping:manager:error:カスタム NSEntityMigrationPolicy にコールバックを実装することで、NSMigrationManager への参照を取得できることがわかりました。そこで観察を開始しました。

唯一の問題は、beginEntityMapping通話に到達するまでに進行状況が最大で約 30% であるように見えることです (また、この 30% は通常、 への通話内で費やされた合計時間の約半分addPersistentStoreWithTypeを表すため、実際には見た目よりもさらに悪いです) )。

アプリの理由についてユーザーにフィードバックを提供する機会の最初の 3 分の 1 を逃さないようにするために、手順の少し前に NSMigrationManager への参照を取得するために使用できるトリックを知っている人はいますか?起動するのにそんなに時間がかかりますか?

助けてくれてありがとう!

4

2 に答える 2

0

この問題をさらに数週間ハッキングした後、これを達成する方法を見つけることができず、ドキュメントaddPersistentStoreWithType:configuration:URL:options:error:に従って手動でトリガーされた移行の使用を完全に停止しました。

于 2011-02-07T18:37:38.433 に答える