【问题标题】:NSManagedObject How To ReloadNSManagedObject 如何重新加载
【发布时间】:2010-06-02 21:29:47
【问题描述】:

我有一个由现有对象表和一个添加按钮组成的视图,它允许 用户创建一个新对象。当用户按下 Add 时,该对象在列表视图控制器中创建,因此该对象将成为该托管对象上下文的一部分 (通过NSEntityDescription insertNewObjectForEntityForName: 方法)。

添加视图具有托管对象的属性。在列表视图控制器中, 我创建了一个添加视图控制器,将属性设置为我创建的托管对象,然后 然后将添加视图推送到导航堆栈。

在添加视图中,我有两个按钮用于保存和取消。在保存中,我保存托管对象 并通过委托方法将托管对象传递回列表视图控制器。如果 用户取消,然后我删除对象并将 nil 传递回列表视图控制器。

我在添加视图中遇到的复杂情况与UIImagePickerController 有关。 在添加视图中,我有一个按钮,允许用户为对象拍照 (或使用照片库中的现有照片)。但是,转移到 UIImagePickerController 并让用户使用相机,导致didReceiveMemoryWarning 在添加视图控制器中。

此外,视图被卸载,这也导致我的NSManagedObject 被破坏。我的问题 是,你如何去重新加载NSManagedObject 在它被释放的情况下,因为 内存不足的情况?

【问题讨论】:

    标签: iphone cocoa cocoa-touch iphone-sdk-3.0


    【解决方案1】:

    只是一个建议,但是等到用户说他们完成编辑后再创建托管对象怎么样?

    将“编辑器”的所有属性存储在您单独保存的字典中(以防在编辑过程中来电,或者他们想从另一个应用程序复制文本以粘贴到您的新项目中),保存每个他们编辑字段的时间。然后,当用户完成编辑后,一次性从字典内容中创建并保存托管对象。如果他们取消,重置(或删除)字典(并清理其持久文件)。这样您就可以在内存不足的情况下更好地控制。

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 1970-01-01
      • 2011-04-30
      • 2012-09-05
      • 2015-05-01
      • 2013-12-05
      • 2014-01-04
      • 2013-07-10
      • 1970-01-01
      相关资源
      最近更新 更多