スタンフォード大学の講義に基づいた Core Data アプリがあります。
トップレベルのView Controllerで、「Day」と1対多の関係を持つ「Trip」を作成します。したがって、次のようになります。
[Trip tripWithInfo:trip inManagedObjectContext:self.tripDatabase.managedObjectContext];
for (int i=0; i<someNumber; i++) {
NSDictionary *dayInfo = [[NSDictionary alloc] initWithObjectsAndKeys:[trip copy], TRIP, [NSNumber numberWithInt:i], DAY_NUMBER, nil];
[Day dayWithDayInfo:dayInfo inManagedObjectContext:self.tripDatabase.managedObjectContext];
}
旅行は正常に機能し、トップレベルのView Controllerに正しく表示されます。問題は、daytableviewcontroller (その旅行の日を表示する必要があります) にセグエする必要がある旅行を選択すると、daytableviewcontroller が空白になることです。
私は次のようにフェッチリクエストを行っています:
- (void)setupFetchedResultsController
{
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:DAY];
request.predicate = [NSPredicate predicateWithFormat:@"whichTrip.tripID = %@", self.trip.tripID];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:DAY_NUMBER ascending:YES]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.trip.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
}
tripID は正しいと思います (NSLog() を使用して確認した場合とまったく同じです) が、画面には何も表示されません。述語を使用しない場合は、すべてが表示されるので、そこにあることがわかります。また、Trip オブジェクトを追加するのは 1 回目または 2 回目で、画面に正しい結果がランダムに表示されるように見えることにも言及しておく必要があります。
この問題の結果として考えられる理由は何ですか?