【问题标题】:How to remove only entities saved to store from Core Data?如何从核心数据中仅删除保存到存储的实体?
【发布时间】:2013-05-26 05:39:05
【问题描述】:

我正在尝试为提要阅读应用程序构建一个缓存系统。这个想法是每次成功拉取一个新的提要时,删除所有存储在 Core Data 中的实体,并存储提要的前 20 项(这用作离线缓存)。

我遇到的问题是,当执行拉动刷新时,我的托管对象上下文中可能有数百个项目。我想将这些项目保留在上下文中,同时从 Core Data 中删除任何存储的项目,然后存储从刷新调用返回的 20 个项目。

不管怎样,我正在使用 Magical Record。我已尝试四处寻找此解决方案,但要么我使用了错误的关键字,要么信息很难找到。

我不确定要准确显示什么代码,但这里是对提要调用的处理:

for (id dict in feedArray){
    WFeedItem *item = [WFeedItem feedItemWithAttributes:[dict dictionaryByReplacingNullsWithBlanks] inManagedObjectContext:[NSManagedObjectContext defaultContext]];
    [parsedArray addObject:item];
}

这从定义它的子类 HTTPClient 传回给调用它的视图控制器。请记住,这一切都很好,只需删除存储的项目,同时保留我在此会话期间收集的所有内容。

【问题讨论】:

    标签: iphone ios core-data magicalrecord


    【解决方案1】:

    只需使用不同的上下文来导入和存储新记录。您的原始对象上下文可以保持原样。

    【讨论】:

    • 我可以使用不同的上下文来仅检索已保存在商店中的项目吗?保存时遇到的问题是我需要删除已经存在的内容而不影响会话中的 NSManagedObjects。商店中可能已经存在来自提要调用的一些新商品,但我需要确保商店中始终有 20 条最新商品……不确定我是否解释得足够好。
    • 这就是我最终要做的事情。基本上我不希望一个上下文来查看存储的内容,但由于这不可能发生,我只将前 20 个项目保存到我的默认 moc 并保存它,然后将其余对象放入 nil moc。
    猜你喜欢
    • 1970-01-01
    • 2012-04-03
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多