0

スタンフォード大学の講義に基づいた 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 回目で、画面に正しい結果がランダムに表示されるように見えることにも言及しておく必要があります。

この問題の結果として考えられる理由は何ですか?

topViewCONtroller 最初のトリップ オブジェクト 2 回目のトリップ オブジェクト

4

1 に答える 1

0

最後に答えを見つけました。オブジェクト カテゴリに間違った述語を追加したことがわかりました。入れていた

request.predicate = [NSPredicate predicateWithFormat:@"dayNumber = %@", day.dayNumber];

でも本当はそうすべきだった

request.predicate = [NSPredicate predicateWithFormat:@"dayNumber = %@", [Trip tripWithInfo:[dayInfo objectForKey:TRIP] inManagedObjectContext:context]];
于 2012-10-09T23:41:35.633 に答える