0

我想弄清楚,如果我正在使用正確的謂詞來獲取具有FRC給定類別對象與以下模型和代碼的Item對象:NSFetchedResultsController,NSPredicate檢索子對象的多對多關係

類別< ----- >>產品

NSEntityDescription *entity = 
    [NSEntityDescription entityForName:@"Item" 
       inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 

[fetchRequest setFetchBatchSize:20]; 

NSSortDescriptor *sortDescriptor = 
    [[NSSortDescriptor alloc] initWithKey:@"itemLabelText" ascending:YES]; 
NSArray *sortDescriptors = @[sortDescriptor]; 

[fetchRequest setSortDescriptors:sortDescriptors]; 

if (self.category.items) { 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", 
          self.category.items]; 
    [fetchRequest setPredicate:predicate]; 
} 

如果在類別沒有條目,我在的CollectionView項目數設置爲0。

- (NSInteger)collectionView:(UICollectionView *)collectionView 
numberOfItemsInSection:(NSInteger)section 
{ 
    if ((self.category.items == nil) || [self.category.items count] == 0) { 
    return 0; 
    } 

    id <NSFetchedResultsSectionInfo> sectionInfo = 
    [self.fetchedResultsController sections][section]; 
    return [sectionInfo numberOfObjects]; 
} 

FRC返回對象上下文中的所有項目,而不僅僅是指定類別中的項目。我試圖直接獲取Item對象,而不是創建/引用額外的屬性。

回答

2

的「通常」的(和更簡單)謂詞抓取爲指定類別的所有項目是

[NSPredicate predicateWithFormat:@"category = %@", self.category] 

假設「類別」是從「項」到「類別」的反比關係。

+0

感謝馬丁,你的謂語絕對是更好的方法。 – JayD

+0

隨着進一步調查,我發現我的問題源於假定FRC動態變化。我正在對FRC謂詞進行更改,並期望輸出能夠自行更改。我執行了下面的代碼來解決這個問題: self.fetchedResultsController = nil; [NSFetchedResultsController deleteCacheWithName:@「Master」]; [[[self fetchedResultsController] collectionView] reloadData]; – JayD