gpt4 book ai didi

iphone - 如何创建多个临时对象,然后使用 Core Data 只保存一个?

转载 作者:太空狗 更新时间:2023-10-30 03:26:16 30 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序将针对在线服务执行搜索并生成许多结果对象。结果对象是一个 NSManagedObject,根据需要通过将其与 NSManagedObjectContext 关联来初始化。

用户应该能够选择“结果”并将其保存为“收藏夹”。在应用程序中,这就像将 Result 实体与新的 Favorite 实体相关联并保存上下文一样简单。

问题是上下文中的每一个结果当然都会与我想要收藏的结果一起保存到数据库中。

我见过许多使用多个 NSManagedObjectContext 实例来管理各种创建和持久性情况的示例。它们似乎都围绕着这样一种想法:使用一个上下文创建新实例,然后在保存时将它们合并到另一个上下文中,以避免再次执行 FetchRequest。这些示例无法解决问题,因为它们仍然会导致保存每个结果实体。

有人有什么建议吗?我对此完全没有兴趣。

最佳答案

您应该为每个对象使用不同的上下文。使用单独的托管对象上下文允许您按如下方式工作。当用户选择其最喜欢的对象时,您只需丢弃与剩余结果对象相关的上下文。无需合并更改等。基本上需要权衡。您最终管理(创建/丢弃)多个上下文,但随后您可以轻松实现目标。否则,您仍然可以仅使用一个上下文来执行此操作。但是,您必须显式插入或删除每个对象,如以下代码片段所示。

试试这个。仅针对您要保存的收藏对象,执行以下操作:

[managedObjectContext insertObject:theFavorite];

对于每个其他结果对象,改为执行此操作:

[managedObjectContext deleteObject:aResult];

然后照常保存

NSError *error = nil
if (![managedObjectContext save:&error]) {
// Handle error

}

这将只保存您选择的、最喜欢的对象。

关于iphone - 如何创建多个临时对象,然后使用 Core Data 只保存一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1619911/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com