我有一个基于斯坦福讲座的 Core Data 应用程序。
在我的顶级视图控制器中,我创建了一个与“Day”具有一对多关系的“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];
}
这次旅行工作正常,并在我的顶级视图控制器中正确显示。问题是当我选择一个行程时,应该继续使用 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 对象时随机显示正确的结果。
这个问题可能是什么原因造成的?