上下文保存失败后未保存的 NSManagedObject 生命周期
Posted
技术标签:
【中文标题】上下文保存失败后未保存的 NSManagedObject 生命周期【英文标题】:Unsaved NSManagedObject life cycle after context save failure 【发布时间】:2014-08-06 09:26:28 【问题描述】:假设由于与数据本身无关的原因,我无法保存 NSManagedObjectContext。一个典型的例子是设备上没有足够的空间。
据我了解,NSManagedObjects 仍驻留在内存中,处于未保存状态。
以下是以下问题:
-
对象会发生什么?他们是否有突然被逐出记忆的风险,特别是当应用程序处于后台时?如果是,发生这种情况时是否有某种通知?
您如何管理此类事件或类似事件,而不是由程序本身引起的?
是否可以在 XCode 开发过程中模拟这种特殊行为(空间不足)?
【问题讨论】:
【参考方案1】:对象会发生什么?他们是否有突然被逐出记忆的风险,尤其是当应用程序处于后台时?如果是,发生这种情况时是否有某种通知?
对象不会从内存中被逐出。 应用程序如果在后台,则可以从内存中逐出。发生这种情况时,应用程序的所有对象也会消失。通知将遵循与普通应用生命周期通知相同的规则——那些由UIApplication
发布并作为回调发送给应用委托的规则。
您如何管理此类或类似的非程序本身的事件?
您无能为力。如果设备上没有空间,则无法保存数据。唯一真正的选择是,如果您有一些可以删除的其他已保存数据,以腾出一些空间。如果这不是一个选项,那么您就不走运了,因为没有地方可以放置这些未保存的数据。
在 XCode 开发过程中是否可以模仿这种特殊行为(空间不足)?
拿一个测试设备并用数据填充它,然后运行您的应用程序。
【讨论】:
以上是关于上下文保存失败后未保存的 NSManagedObject 生命周期的主要内容,如果未能解决你的问题,请参考以下文章
IOS13:选择保存照片后未调用 UIActivityViewController.completionWithItemsHandler
为啥在关闭/打开应用程序后未保存的修改后的 NSManagedObject 在 isUpdated 上返回 FALSE?
在 stringWithContentsOfURL cookie 后未保存在 UIWebView 中。 iOS
Magical Records:加载要在本地上下文中更新的记录