2013-07-16 2 views
0

Я хочу показать только уникальные результаты запроса основной выборки данных. В настоящее время из исследования, которое я видел, можно добиться от использования NSDictionaryResultType, но я изо всех сил старался заставить его работать.Показывать только уникальные результаты в данных ядра NSFetchResultController

Я попытался использовать следующее, но не смог правильно связать его с моим классом. Я не был на 100% уверен, что ставить после NSArray *distincResults, как он пришел неиспользуемую переменную:

 NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Routines" inManagedObjectContext:managedObjectContext]; 
request.entity = entity; 
request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"routinename"]]; 
request.returnsDistinctResults = YES; 
request.resultType = NSDictionaryResultType; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"routinename" ascending:YES]; 
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; 

NSError *error = nil; 
NSArray *distincResults = [managedObjectContext executeFetchRequest:request error:&error]; 
// Use the results 

Любые предложения?

+0

Вы не должны сбрасывать весь код вашего класса. Просто укажите необходимые части. Пожалуйста, пересмотреть свой вопрос. – Mundi

ответ

0

Если вы используете NSDictionaryResultType, вы не можете использовать делегат FRC для просмотра изменений. Если это нормально, вы можете пойти по этому маршруту.

Как только у вас есть набор словарей (distinctResults), сделайте так, чтобы массив данных вашего представления таблицы. Так, например, в cellForRowAtIndexPath или configureCell используйте

cell.textLabel.text = distinctResults[indexPath.row][@"routinename"]; 

Это короткая форма

cell.textLabel.text = [[distinctResults objectAtIndex:indexPath.row] 
          objectForKey:@"routinename"]; 
+0

Так что бы я добавил в код внизу? – Sgillon

+0

См. Мое редактирование выше. Вы должны изменить методы источника данных вашего контроллера. – Mundi

+0

Да, я знаю о configureCell, однако я получаю предупреждение о 'NSArray * distincResults', который выдает неиспользуемую переменную. Столбец пуст. – Sgillon

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