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對象,而不是創建/引用額外的屬性。
感謝馬丁,你的謂語絕對是更好的方法。 – JayD
隨着進一步調查,我發現我的問題源於假定FRC動態變化。我正在對FRC謂詞進行更改,並期望輸出能夠自行更改。我執行了下面的代碼來解決這個問題: self.fetchedResultsController = nil; [NSFetchedResultsController deleteCacheWithName:@「Master」]; [[[self fetchedResultsController] collectionView] reloadData]; – JayD