1

У меня есть 2 объекта: Сообщение & Категория, Почтовое сущность имеет отношение к одному с категорией, каждое сообщение имеет одну категорию.iOS Core Data NSFetchRequest groupby объект отношений

 
Post   Category 
----   -------- 
postId   categoryId 
title   title 
slug   slug 
category ----> posts 

Что мне нужно, это NSFetchRequest, чтобы получать сообщения по дате, а затем группировать категории.

так результат будет что-то вроде:

 
Category1: 
    - Post 1 
    - Post 2 

 
Category 2: 
- Post 3 
- Post 4 

я пробовал:

 
[_fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObjects:@"category.categoryId", nil]]; 

и:

 
[_fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObjects:@"category", nil]]; 

без успеха. Какие-либо предложения ?

Спасибо.

ответ

0

Вы можете попробовать что-то вроде этого:

//context is the NSManagedObjectContext 
NSEntityDescription* post = [NSEntityDescription entityForName:@"Post" 
               inManagedObjectContext:context]; 
NSAttributeDescription* catDesc = [post.attributesByName objectForKey:@"category"]; 
[_fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObjects:catDesc, nil]]; 
+0

Я попытался, что, давая мне аварию: *** Нагрузочных приложение из-за неперехваченное исключения NSInvalidArgumentException, причина: SELECT положения в запросах с GROUP BY компонентов может содержать только свойства, указанные в функциях GROUP BY или aggregate ((), имя __af_resourceIdentifier, isOptional 1, isTransient 0, entity Post, renamingIdentifier __af_resourceIdentifier, предикаты проверки ( ), предупреждения ( ), версияHashModifier (null) userInfo { }, attributeType 700, attributeValueClassName NSString, defaultValue (null) не находится в GROUP BY) – Haitham

+0

im, используя AFIncrementalStore, который вставляет атрибут, упомянутый выше '__af_resourceIdentifier', который вызывает сбой – Haitham

+0

Извините, просто прочитайте свой вопрос более тщательно, возможно, что вы хочу здесь не groupby, а порядок, т. е. сортировать свой пост по категориямId, и затем вы можете перебирать их, чтобы разбить его на группы. Самый простой способ сделать это, что я могу сейчас написать, - добавить поле категорииId в Post Entity и соответственно установить sortDescriptors. – djshiow

Смежные вопросы