1

世界中のサイトで風速を読み取るアプリがあります。靴箱型アプリでiCloudとCore Dataを使うことにしました。

風の測定値は 1 時間ごとに更新されます。このアプリを数週間使用した後、iCloud/コア データが数メガバイトのトランザクションでいっぱいになり、デバイスを復元してストアを新しいデバイスにダウンロードするのに 10 分かかるため、これは悪い考えであることに気付きました。

これに対する私の解決策は、「サイト」がiCloudストアに保存されるようにコアデータ構成を使用することでしたが、12時間後に削除される1時間ごとに変化する「風速測定値」はローカルストアに保存されました。イメージしやすいとすれば、時間ごとに変化する RSS の「サイト」や「エントリ」と同じような働きをします。

これはすべてうまく機能しますが、アプリの 2.0 バージョンの移行コードを記述する方法がわかりません。構成がどのように機能するかを読んだ後、サイトと風の読み取り値の間の親子関係を削除し、フェッチ要求を使用して、共通の siteIdentifier UUID を使用してそれらをリンクする必要がありました。

このようにすると、軽量の移行を使用できないと思いますか? また、バージョン管理された .momd モデル ファイルをロードすると最新のモデルが得られるので、元のモデル ファイルを取得してストアをロードし、すべてを手動で行うにはどうすればよいでしょうか。

一方、これはあまりにも複雑で、iCloud のサポートを削除した方がよいのでしょうか、それとも別の方法をお勧めしますか?

4

1 に答える 1

1

この状況では、軽量の移行を使用できるはずです。

その理由は、'iCloud' 構成に関する限り、エンティティを削除してプロパティを削除する (つまり、テーブルと列を削除する) だけだからです。自動移行はそれをうまく処理できます。

でも...

キャッチがあります。最初に「ローカル」構成にデータをコピーすることはありません。したがって、移行前に手動で行う必要があります。基本的な手順は次のとおりです。

  1. この移行が必要かどうかを判断します。
  2. sqlite ファイルを「local.sqlite」にコピーします。
  3. iCloud設定を立ち上げると、測定値が削除されます。
  4. ローカル構成を立ち上げると、サイトが削除されます。
  5. テスト、テスト、再度テスト、そしてテストを続ける。
于 2013-02-11T18:49:55.303 に答える