问题:处理一堆数据的最佳方法是什么,只有一些对象应该保存到 coredata 中的磁盘?
这是应用程序/问题:该应用程序将为用户提供在互联网上搜索不同项目的可能性。搜索将返回许多将显示给用户的对象。用户应该能够随时收藏这些对象中的任何一个。受青睐的对象应连接到当前登录的用户,并在应用退出后继续存在。
该应用程序将以 iOS6 为基础。
我一直在使用这些资源
我目前正在研究使用 3 个上下文的父/子方法:主上下文类型、主要上下文类型和限制上下文类型。
当前可能的解决方案:
- 在磁盘上执行保存的 MasterContext(具有persistentStoreCoordinator)
- UI 使用的 MainContext(masterContext 的子级)
- BackgroundContext 处理来自搜索的新对象。(mainContext 的子级)
因此,用户可以进行搜索,返回 100 个对象(在后台上下文中导入并保存到主上下文中)。其中 2 个对象受到用户的青睐(在主上下文中)。该对象将被添加到用户并设置为“应该保存”。(在保存时,对象将被推送到主上下文)
当我保存主上下文时,我不想将所有 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
}
}];
}
但据我了解,当在父上下文上执行保存时,所有更改都将传播给子级。然后我将释放除已存储的两个之外的所有对象。
那么有谁知道如何解决这种问题?我可以在上面的例子中做些什么吗?或者我应该创建多个持久存储并在上下文之间移动对象?
感谢所有愿意提供帮助的人,如果需要更多信息,请询问:)