У меня проблема с тем, как сформулировать NSPredicate для получения правильных данных. У меня есть три объекта (Предложение, Список, Элемент) и объект OfferMatch, который соответствует предложению для каждой пары (Список, Элемент).
Я пытаюсь получить все предложения из выбранного списка, но разные товары могут иметь одно и то же предложение, и когда я их получаю, я получаю дубликаты некоторых предложений. Я хочу получить четкий ответ без каких-либо предложений, показанных более одного раза.
Я пытался использовать:
[NSFetchRequest setResultType:NSDictionaryResultType]
[NSFetchRequest ssetPropertiesToFetch:
[NSFetchRequest ssetReturnsDistinctResults:YES]
, но NSFetchResultsController вообще не поддерживает NSDictionaryResultType
.
Вот пример кода, когда я настраиваю NSFetchResultsController:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
// I'm interested in both Offer of OfferMAtch entity to get, so you can select more usefull for you
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Offer or OfferMatch" inManagedObjectContext:[CoreDataHandler context]];
[request setEntity:entity];
// I want to get all Offers from selected List, but with each one being only once
NSPredicate *predicate = [NSPredicate predicateWithFormat:@" ---- HERE IS MAGIC --- "];
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"categoryID" ascending:NO];
NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"descriptionString" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, sortDescriptor2, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
[sortDescriptor2 release];
if (self=[[OfferFetchResults alloc]
initWithFetchRequest:request
managedObjectContext:[CoreDataHandler context]
sectionNameKeyPath:@"categoryID"
cacheName:nil])
{
self.delegate = self;
}
[request release];
[self performFetch:nil];
Я не очень хорошо формулирую сложные NSP-предикаты. Я надеюсь, что кто-нибудь поможет мне, потому что Руководство по программированию NSPredicate не поможет мне.