0

enter image description hereNSFetchResultsController謂詞問題

我有問題如何制定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不會'幫助我。

+1

把你的評論作爲一個答案,並接受它自己 - 它顯示其他人已經解決了這個問題:) – deanWombourne

回答

0

解決了......我不再嘗試準備NSPredicate。我簡單地更改了DB模型刪除實體OfferMatch,然後直接添加適當的關係beetwen主要實體。