Базовые данные: сортировка NSFetchRequest по количеству отношений ко многим - PullRequest
6 голосов
/ 15 марта 2010

Скажем, у меня есть родительский объект, у каждого из которых есть несколько детей. Я хочу, чтобы все родители были отсортированы по количеству детей. Нечто похожее на следующий псевдокод:

NSEntityDescription * entity = [NSEntityDescription entityForName:@"Parent" inManagedObjectContext:managedObjectContext];

[[NSSortDescriptor alloc] initWithKey:@"children.count" ascending:NO];
//Execute request

Есть ли способ создать подобную выборку, используя данные ядра? Если нет способа сделать это, будет ли сортировка с использованием sortedArrayUsingSelector: потерять преимущества размера пакета _PFBatchFaultingArray?

Спасибо, Ben

1 Ответ

5 голосов
/ 15 марта 2010

Ваш запрос будет работать, но (при условии, что children неисправен) будет использовать методы кодирования значения ключа для свойства children, что, в свою очередь, вызовет ошибку (см. документ NSManagedObject для список методов, которые запускают сбои, и обсуждение этого поведения), поэтому вы потеряете преимущества производительности от пакетирования и сбоев.

Вы можете рассмотреть возможность сохранения производного атрибута в вашей родительской сущности (назовите его childrenCount), который отражает количество дочерних элементов, связанных с родителем, если это возможно в вашей ситуации. Это не самое чистое решение, но если вы сохраните его как NSNumber в родительской сущности, у вас будет доступ к нему, даже если children неисправен, и вы можете отсортировать его напрямую.

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