我的应用程序有一些属性(关系)在我的核心数据模型的某些实体中不是可选的。我applicationDidEnterBackground
在 App Delegate 上有 save 方法。问题就在这里。
我的一些用户不断丢失数据(保存错误),因为当他们输入数据但尚未填写实体的非可选属性时,来电或推送消息。他们拿起电话或阅读信息,回到应用程序并继续输入数据。但是,我的应用程序有一个密码锁,每次应用程序启动时都需要该密码锁,并将用户带到仪表板控制器,因此他们无法在电话/消息之前恢复数据输入。
所以在 managedObjectContext 中有一个未填充的 NOT Optional 属性的 managedObject。用户继续填写更多数据,然后关闭应用程序,认为数据已保存。几个小时后,或者当他们从扩展坞中终止应用程序并重新打开应用程序时,在电话/消息之后输入的所有数据都将消失,并出现以下错误:
NSLocalizedDescription = "The operation couldn\U2019t be completed. (Cocoa error 1570.)";
NSValidationErrorKey = propertyName;
如何防止此错误发生?我可以想到2个解决方案:
1) 将所有属性设为可选,但我将不得不更改核心数据模型并进行数据迁移。我从来没有这样做过,并且担心迁移在上线时会失败。所有应用内购买都存储在核心数据中。
2)以某种方式从上下文中检查具有未填充的非可选属性的坏 managedObject 并在保存之前删除该对象。我该怎么做呢?
3) ?
谢谢,