Как мне создать NSManagedObjectContext, который является подмножеством другого NSManagedObjectContext? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать NSFetchedResultsController (FRC) для моего UITableViewController, потому что мне нравится функциональность, которая поставляется с FRC, а не ручное управление моим UITableView

Моя проблема в том, что мне нужно иметьфильтр на моем табличном представлении, и мой фильтр не может быть легко выполнен без использования «Предиката с битами», который не работает с моим FRC См. Связанный пост

Так что я хочу сделать в этомДело в том, чтобы создать контекст специально для моего 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 голосов
/ 09 мая 2019

Итак, мой вопрос: как мне создать этот «дочерний» контекст?

Ну, дочерний контекст - это вещь. Просто создайте контекст и установите его parent в исходный контекст управляемого объекта.

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

В верхней части документации NSManagedObjectContext обсуждается, как дочерний контекст связан с его родителем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...