このコードの何が問題になっていますか?
私はこれがばかげた述語であることを知っています。しかし、これが機能している場合は、すべてを除外する必要があることを示すためだけですよね?
どういうわけか、そうではありません。DB ですべての Month オブジェクトを取得していますが、何も取得していないはずです。
これは、問題が述語にない可能性があることを示していると思いますか?
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Month" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setPredicate: [NSPredicate predicateWithFormat:@"1 == 0"]];
NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"month_" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"month_"
cacheName:@"Root"];
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [[_fetchedResultsController sections] count];
}
私が実際にやりたかったことは、
[NSPredicate predicateWithFormat:@"year.year_ == %d", year]
そして、私もこれを試しました、
[NSPredicate predicateWithFormat:@"month_ == %d", 1]
それが機能するかどうかを確認するだけです。しかし、何もありません。
編集:
この時点で、どのような述語を設定しても、それが有効で適切にフォーマットされた述語である限りは問題ありません。それは文句を言わず、すべてのオブジェクトを取得します。何もフィルタリングしていないだけです。
私はほとんどの場合、Apple のドキュメントのボイラー プレート コードを使用しています。
誰でもこれを理解するのを手伝ってもらえますか?
ありがとうございました!