0

由于各种原因(最后总结),我正在尝试使用 anNSFetchedResultsController返回一些NSManagedObjects.

具体来说,aPerson有很多Cars,使用核心数据关系汽车建模。我想添加另一种方法Person来返回与 self.cars 相同的汽车,但使用 FRC。

我想我犯了一个基本错误NSPredicate,该错误旨在仅找到以下汽车car.person == self

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Car"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateAdded" ascending:YES];


 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
   [fetchRequest setSortDescriptors:sortDescriptors];

   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"person == '%@'", self];
   [fetchRequest setPredicate:predicate];

   NSFetchedResultsController *controller = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                  managedObjectContext:self.managedObjectContext
                                                  sectionNameKeyPath:nil
                                                  cacheName:nil];
   NSError *error;
   BOOL success = [controller performFetch:&error];

根本没有汽车被退回。我的谓词不正确吗?

旁注 - 为什么不直接使用 self.cars? 就像我说的,这是一个实验。我希望从NSFetchedResultsController.

4

2 回答 2

1

在示例中,您正在获取"Person"对象。也许您想"Car"取而代之的是获取对象?

 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Car"];
于 2012-10-22T20:52:38.240 回答
1

谓词中的单引号是错误的,应该是

[NSPredicate predicateWithFormat:@"person == %@", self];
于 2012-10-22T21:41:15.617 回答