私のアプリには、Core Data モデルの一部のエンティティでオプションではないいくつかのプロパティ (関係) があります。applicationDidEnterBackground
App Delegateの save メソッドがあります。ここに問題があります。
一部のユーザーは、データを入力しているが、エンティティのオプションではないプロパティにまだ入力していないときに、電話またはプッシュ メッセージが来るため、データを失い続けます (保存エラー)。彼らは電話を取るか、メッセージを読み、アプリに戻ってデータ入力を続けます。ただし、私のアプリには、アプリを起動するたびに必要なパスコード ロックがあり、ユーザーがダッシュボード コントローラーに移動するため、電話/メッセージの前にデータ入力を再開できません。
そのため、managedObjectContext には、NOT Optional プロパティが入力されていない managedObject があります。ユーザーはさらにデータを入力し続け、データが保存されたと考えてアプリを閉じます。数時間後、またはドックからアプリを強制終了してアプリを再度開くと、電話/メッセージの後に入力されたすべてのデータが次のエラーで失われます。
NSLocalizedDescription = "The operation couldn\U2019t be completed. (Cocoa error 1570.)";
NSValidationErrorKey = propertyName;
このエラーが発生しないようにするにはどうすればよいですか? 私は2つの解決策を考えることができました:
1) すべてのプロパティをオプションにしますが、コア データ モデルを変更してデータ移行を行う必要があります。私はこれを行ったことがなく、ライブになったときに移行が失敗するのではないかと心配しています。アプリ内購入はすべてコア データに保存されます。
2) どういうわけか、コンテキストから NOT オプション プロパティが入力されていない不適切な managedObject をチェックし、保存する前にオブジェクトを削除します。どうすればいいですか?
3) ?
ありがとう、