4

Core Data と iCloud を使用するアプリがあります。トランザクション ログは、ユーザーのユビキタス コンテナー、DB ストア ファイル、および .nosync フォルダーにあります。

通常は問題ありませんが、「アプリがロックされたシステムファイルで中断されました」と表示されてアプリがクラッシュすることがあります。NSPersistentStoreDidImportUbiquitousContentChangesNotificationこれは、アプリが iCloudを取得してから、アプリがデータベースを更新するときに発生していることに気付きました。

iCloud と Core Data を使用するためのベスト プラクティスは何ですか? バックグラウンドに入るときに DB を閉じたり、iCloud 通知のオブザーバーを削除したりするなど、Apple のドキュメントには推奨事項がありませんでした。オブザーバーを維持する必要があります。

PS: クラッシュ レポートからいくつかの情報を追加しようとしていますが、StackOverflow は「間違った書式設定」のためにそれを受け入れたくありません。

4

1 に答える 1

1

アプリがランダムにクラッシュすることは、iCloud と Core Data を使用しようとするとよく発生します。

私がそれを機能させる唯一の方法は、この例の実装を模倣することでした: https://github.com/alekseyn/iCloudStoreManager

私は提供された UbiquityStoreManager クラスを使用し (私の場合は非 ARC に適応)、AppDelegate/ViewControllers のすべての iCloud 関連および Core Data 関連のコードを適応させました。

リファクタリングの努力の価値がありました。

于 2013-01-09T10:55:57.547 に答える