2013-05-30 60 views
0

我正在尝试为feed阅读应用程序构建一个缓存系统。这个想法是每次成功提取新的提要,删除核心数据中的所有存储实体,并存储提要的前20项(用作脱机缓存)。如何只删除保存到核心数据存储的实体?

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

对于它的价值,我使用魔法记录。我试过寻找这个解决方案,但是我使用了错误的关键字或信息很难找到。

我不知道要显示什么代码完全,但这里的饲料呼叫处理:

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

这被传递从一个视图控制器子类的了HTTPClient它的定义已经把它称为回。请记住,这一切都正常工作,这都是删除存储的项目,同时保留在本次会议期间收集的所有内容。

感谢,

布兰登

回答

0

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

+0

我可以使用不同的上下文来检索已存储在商店中的物品吗?我在保存时遇到的问题是我需要删除已存在的内容,而不会影响会话中的NSManagedObjects。这很可能来自Feed调用的一些新项目已经存在于商店中,但我需要确保商店始终具有最近的20个项目......不确定是否我解释得很好。 – Stakenborg

+0

这就是我最终做的事情。基本上我不希望一个上下文看到存储的内容,但基本上,但因为这不会发生,我只是我的第20个项目到我的默认moc并保存它,然后将其余的我的对象放在一个零moc。 – Stakenborg