【问题标题】:Get newest object added to NSFetchedResultsController?获取添加到 NSFetchedResultsController 的最新对象?
【发布时间】:2011-04-02 19:28:24
【问题描述】:

甚至不确定这是否可行,但这是用例:

我有一个 RootView 表视图,它使用NSFetchedResultsController 来管理列表。我点击一个添加按钮,它显示AdditionViewControllerAdditionViewController 使用单独的managedObjectContext 来创建新对象。在保存时,对象被传回 RootView,新对象(在新的managedObjectContext 中)被合并到主managedObjectContext 中。然后AdditionViewController 被解除,显示 RootView。

我希望喜欢做的是推送我的DetailViewController,并在合并后加载新的对象,这样当AdditionViewController 被解除时,完整的细节视图就会显示出来。

如何获取刚刚添加到fetchedResultsController 的对象以便将其传递给DetailViewController

--更新--

仍然没有这方面的内容。让我试着解释一下我需要做什么(希望)更好一点。如果这仍然令人困惑,请提出问题。我很难考虑如何描述这个问题。

我完全知道如何在保存新对象时将详细视图推送到模态添加视图下方。问题是我保存的对象在它自己的fetchedReaultsController 中。我正在将此 frc 合并到主 fetchedResultsController 中,所以如果我尝试将对象发送到详细视图,我会崩溃,因为在模态添加视图被解除时对象已失效(由于合并) ,详细视图调用viewWillAppear。这就是我想要解决的问题。我如何才能确定刚刚添加到主 fetchedResultsController 的对象以便将其发送到 detailViewController?

--更新--

为任何可以告诉我如何从获取的结果控制器中检索最近添加的对象的人添加赏金。或者如何在不知道它是 indexPath 的情况下从获取的结果控制器中检索特定对象。

【问题讨论】:

    标签: objective-c ios nsfetchedresultscontroller


    【解决方案1】:

    这是我在几乎相同的用例中的做法:

    1. 在显示AdditionViewController 时,用户可以选择保存他们创建的项目或取消新项目对话框。我将用户的选择反馈给RootViewController
    2. 如果用户取消,请从上下文中删除您创建的对象。
    3. 如果用户选择保存,保存上下文并显示DetailViewController

    【讨论】:

    • 是的,我可以让它工作。我已经实现了一个保存布尔值。我想不通的是如何获取刚刚保存的对象以便将其传递给DetailViewController
    • 在保存之前如何创建托管对象?只需持有对它的引用并将其传递回委托。
    • 我也可以这样做,但它在不同的托管上下文中。因此,当详细视图显示时,该对象已因合并而失效。
    • 您可以传回对象 ID 而不是整个对象,然后在新上下文中重新获取它。
    【解决方案2】:

    作为记录,答案是在保存上下文后获取addingManagedObjectContext中对象的对象ID(因为保存后ID更改),并在合并后将该ID传递给主managedObjectContext。所需的完整代码如下(如果有人有更简单的方法,请告诉我)

    detailViewController.object = (customObject *)[[fetchedResultsController managedObjectContext] objectWithID:[[[[addingManagedObjectContext registeredObjects] allObjects] objectAtIndex:0] objectID]];
    

    感谢frenetisch applaudierend 为我指明了正确的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多