【问题标题】:How do I create a NSManagedObjectContext that's a subset of another NSManagedObjectContext?如何创建作为另一个 NSManagedObjectContext 子集的 NSManagedObjectContext?
【发布时间】:2019-09-26 16:59:19
【问题描述】:

我正在尝试为我的 UITableViewController 使用 NSFetchedResultsController(FRC),因为我喜欢 FRC 附带的功能,而不是尝试手动管理我的 UITableView

我的问题是我的表格视图需要有一个过滤器,如果不使用不适用于我的 FRC See Related Post的“predicateWithBlock”,我的过滤器就无法轻松完成。

所以我现在要做的是专门为我的 FRC 创建一个上下文,然后只将我想在我的 FRC 中显示的对象添加到这个单独的上下文中。这样我的 FRC 就不需要过滤任何东西,它只需要将对象直接拉出这个临时上下文。

所以我的问题是如何创建这个“子”上下文?这是个好主意吗?

我尝试创建一个空上下文,然后从主上下文插入对象,但尝试手动将 NSManagedObjects 从一个上下文复制到另一个上下文看起来并不简单。我想知道是否有更好的方法来创建我缺少的子集?

NSMangedObjectContext * myFRCContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

NSArray * managedFoobarObjectsToInsert = [myRealContext getFoobarObjects];

for(id managedObject in managedObjectsToInsert) {
    if([managedObject passesFilterConditions])
        //...now what?
}

【问题讨论】:

  • 总的来说我同意,但在这种情况下模型设计不取决于我

标签: ios objective-c core-data nsmanagedobjectcontext


【解决方案1】:

所以我的问题是如何创建这个“子”上下文?

嗯,子上下文是一个东西。只需创建一个上下文并将其 parent 设置为您的原始托管对象上下文。

https://developer.apple.com/documentation/coredata/nsmanagedobjectcontext/1506529-parent

在 NSManagedObjectContext 文档的顶部有关于子上下文如何与其父上下文相关的讨论。

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多