NSManagedObject 如何重新加载
Posted
技术标签:
【中文标题】NSManagedObject 如何重新加载【英文标题】:NSManagedObject How To Reload 【发布时间】:2010-06-02 21:29:47 【问题描述】:我有一个由现有对象表和一个添加按钮组成的视图,它允许
用户创建一个新对象。当用户按下 Add 时,该对象在列表视图控制器中创建,因此该对象将成为该托管对象上下文的一部分
(通过NSEntityDescription insertNewObjectForEntityForName:
方法)。
添加视图具有托管对象的属性。在列表视图控制器中, 我创建了一个添加视图控制器,将属性设置为我创建的托管对象,然后 然后将添加视图推送到导航堆栈。
在添加视图中,我有两个按钮用于保存和取消。在保存中,我保存托管对象 并通过委托方法将托管对象传递回列表视图控制器。如果 用户取消,然后我删除对象并将 nil 传递回列表视图控制器。
我在添加视图中遇到的复杂情况与UIImagePickerController
有关。
在添加视图中,我有一个按钮,允许用户为对象拍照
(或使用照片库中的现有照片)。但是,转移到
UIImagePickerController
并让用户使用相机,导致didReceiveMemoryWarning
在添加视图控制器中。
此外,视图被卸载,这也导致我的NSManagedObject
被破坏。我的问题
是,你如何去重新加载NSManagedObject
在它被释放的情况下,因为
内存不足的情况?
【问题讨论】:
【参考方案1】:只是一个建议,但是等到用户说他们完成编辑后再创建托管对象怎么样?
将“编辑器”的所有属性存储在您单独保存的字典中(以防在编辑过程中来电,或者他们想从另一个应用程序复制文本以粘贴到您的新项目中),保存每个他们编辑字段的时间。然后,当用户完成编辑后,一次性从字典内容中创建并保存托管对象。如果他们取消,重置(或删除)字典(并清理其持久文件)。这样您就可以在内存不足的情况下更好地控制。
【讨论】:
以上是关于NSManagedObject 如何重新加载的主要内容,如果未能解决你的问题,请参考以下文章
从 Core Data 加载 NSManagedObject 时,我可以免费获得它的孩子吗?
将 NSManagedObject 重新插入到 ManagedObjectContext