ios - 使用父/子方法和临时对象实现CoreData

标签 ios core-data nsmanagedobjectcontext

问题:什么是处理仅将某些对象保存到coredata中的磁盘上的数据束的最佳方法?

这是应用程序/问题:
该应用程序将为用户提供在互联网上搜索不同项目的可能性。
搜索将返回将显示给用户的许多对象。
用户应该可以随时收藏这些对象中的任何一个。应优先使用的对象应连接到当前登录的用户,并在应用程序退出后继续存在。

该应用程序将以iOS6为基础。

我一直在使用这些资源

  • Apple's Core Data Programming Guide: Efficiently Importing Data
  • Implementing Fast and Efficient Core Data Import on iOS 5
  • iDeveloperTV CoreData performance course

  • 我目前正在使用3种上下文来研究父/子方法:主,主和限制上下文类型。

    当前可能的解决方案:
  • 在磁盘上执行保存的MasterContext(具有persistentStoreCoordinator)
  • UI(masterContext的子级)使用的
  • MainContext
  • BackgroundContext处理来自搜索的新对象。 (mainContext的子级)

  • 因此,用户可以进行一次搜索,该搜索将返回100个对象(在后台上下文中导入并保存到主上下文中)。
    用户喜欢这些对象中的2个(在主上下文中)。该对象将被添加到用户并设置为“应该保存”。 (在保存时,对象将被推送到主上下文)

    当我保存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
        }
    }];
    }
    

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

    那么有人知道如何解决这种问题吗?在上面的示例中我可以做些什么吗?还是应该创建多个persistentStores并在上下文之间移动对象?

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

    最佳答案

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

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

    关于ios - 使用父/子方法和临时对象实现CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991287/

    相关文章:

    iphone - 截取部分iphone屏幕

    ios - 在 Objective-C 中,如果响应为零,如何处理

    c# - Xamarin.Forms:用于在 UITableViewCell 上显示披露指示器的自定义渲染器

    ios - Xcode(iOS 应用程序)如何使用私有(private)存储库中托管的 swift 包?

    iphone - 并发且可靠地使用核心数据

    objective-c - 核心数据: How to merge inserts/updates/deletes between two NSManagedObjectContext's while maintaining the merge as an undoable step?

    swift - 临时上下文中的 NSManagedObject 出现错误

    objective-c - 使用 Core Data 计算一个简单的总和

    ios - CoreData 并发问题

    ios - 核心数据 : should I be fetching objects from the parent context or does the child context have the same objects as the parent?