0
我有問題如何制定NSPredicate以獲取正確的數據。我有三個實體(Offer,List,Item)和實體OfferMatch,它們與每個對(List,Item)的報價相匹配。
我試圖從選定的列表中獲得所有優惠,但不同的項目可以有相同的優惠,當我提取它們時,我會得到一些重複的優惠。我想得到明確的答案,而不是任何優惠顯示不止一次。
我試圖用:
[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];
我不是在制定複雜NSPredicates好。我希望有人能幫助我,因爲NSPredicate Programming Guide不會'幫助我。
把你的評論作爲一個答案,並接受它自己 - 它顯示其他人已經解決了這個問題:) – deanWombourne