2

コア データと iCloud に関する WW2013 のビデオでは、永続ストア コーディネーターをセットアップするときに NSPersistentStoreUbiquitousContentURLKey を指定することで、iCloud を使用した iOS7 より前のコア データ ストレージを iOS7 の方法に移行できると述べました。

これで運が良かった人はいますか?永続ストアでは、SQLLite データベースを .nosync フォルダーに、ログ ファイルを別のサブディレクトリに配置しました。NSPersistentStoreUbiquitousContentURLKey をそれぞれを指すように設定しようとしましたが、すべてが移行されるのではなく、常にデータベース全体が上書きされます。

4

1 に答える 1

2

iOS 7 への移行について何も言われたことは覚えていませんが、トランザクション ログ用にカスタム パスが指定されていたレガシー アプリとの互換性を維持するために、NSPersistentStoreUbiquitousContentURLKey を引き続き使用できることを示していたことを思い出します。このキーはログ ディレクトリを指すためにのみ使用する必要があり、これを使用しても何も移行されません。Core Data は既存のストアと iCloud トランザクション ログを使用するだけです。

migratePersistentStoreiOS7 の新しいデフォルトを使用するように移行するには、 API を使用して、新しいファイル URL と NSPersistentStoreUbiquitousContentNameKey のみを使用して新しいストアを作成する必要があります。Core Data は、フォールバックとローカル (iCloud 同期) ストアと iCloud トランザクション ログ ファイルを自動的に作成します。

編集:

他の誰かがこれを試して問題を抱えている場合は、新しいデフォルトの WAL モードではなく、JOURNAL モードを使用するようにストアを設定してみてください。WAL モードを使用しているときに特定の移行を行うと、いくつかの問題があるようです。WAL モードに特定のバグがあるかどうかを誰かが把握している場合は、ここにリンクを追加してください。

于 2013-11-19T06:29:20.213 に答える