问题:处理大量数据的最佳方法是什么,只有部分对象应该保存到coredata中的磁盘上?
这是应用/问题: 该应用程序将为用户提供在互联网上搜索不同项目的可能性。 搜索将返回将向用户显示的多个对象。 用户应该能够随时收藏这些对象中的任何一个。受欢迎的对象应连接到当前登录的用户,并在应用程序退出后生效。
该应用程序将以iOS6为基础。
我一直在使用这些资源
我目前正在研究使用3种上下文的父/子方法:Master,Main和Confinement上下文类型。
当前可能的解决方案:
因此,用户可以进行搜索,返回100个对象(在背景上下文中导入并保存到主上下文中)。 其中2个对象受用户青睐(在maincontext上)。该对象将添加到用户并设置为“应该保存”。 (在保存时,对象将被推送到主上下文)
当我保存mastercontext时,我不想将所有100个对象保存到磁盘。只是用户喜欢的两个对象。
所以我想在我在mastercontext上保存之前删除不应该保存到磁盘的对象。
- (void) mainContextHasSaved: (NSNotification *) notification {
NSLog(@"Lets save the master");
[_masterManagedObjectContext performBlock:^{
//Loop through all inserted object and check if they should be saved to disk
[self removeObjectThatShouldNotBeSavedToDisk];
NSError *error = nil;
BOOL saveSuccess = [_masterManagedObjectContext save:&error];
if(saveSuccess) {
//Do something
}
}];
}
但在我理解之后,当在父上下文上执行保存时,所有更改都将传播给子项。然后我会松开除了已存储的两个对象之外的所有对象。
那么有谁知道如何解决这类问题?这是我在上面的示例中可以做的事情吗?或者我应该创建多个persistentStore并在上下文之间移动对象吗?
感谢所有愿意提供帮助的人,如果需要更多信息,请询问:)
答案 0 :(得分:0)
在一个类似的项目中,我使用了这个也受到用户青睐的解决方案:
在下载的项目中保留时间戳属性,并在时间戳超过某个阈值且时将其删除,并将其标记为收藏夹。