2

问题:处理一堆数据的最佳方法是什么,只有一些对象应该保存到 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
    }
}];
}

但据我了解,当在父上下文上执行保存时,所有更改都将传播给子级。然后我将释放除已存储的两个之外的所有对象。

那么有谁知道如何解决这种问题?我可以在上面的例子中做些什么吗?或者我应该创建多个持久存储并在上下文之间移动对象?

感谢所有愿意提供帮助的人,如果需要更多信息,请询问:)

4

1 回答 1

0

在一个类似的项目中,我使用了这个也受到用户青睐的解决方案:

在下载的项目中保留时间戳属性,并在时间戳超过某个阈值且未标记为收藏时将其删除

于 2012-12-21T17:59:53.513 回答