如何创建作为另一个NSManagedObjectContext的子集的NSManagedObjectContext?

时间:2019-05-08 21:56:00

标签: ios objective-c core-data nsmanagedobjectcontext

我正在尝试为我的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?
}

1 个答案:

答案 0 :(得分:0)

  

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

好吧,子上下文是一回事。只需创建一个上下文并将其parent设置为原始的受管对象上下文即可。

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

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