我有一个包含两个实体的简单数据模型。名为Character的父实体和名为Statiscis的子实体。一个角色可以有多个统计数据,每个统计数据只能有一个父数据,所以关系是多对一的。
从显示字符详细信息的视图控制器中,我调用新的表VC列出与此字符相关的所有统计信息。在这个控制器上,当我尝试构建fetchedResultsController时,我有一个很好的SIGABRT:“无法为谓词生成SQL(character == currentCharacter)(RHS上的问题)”。
当我创建表VC时,我通过prepareForSegue上的两个属性(相同名称)发送managedObjectContext和详细信息VC上显示的字符,因此在表中VC self.currentCharacter承载一个Character受管对象的实例。
#pragma mark - NSFetchedResultsController
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil)
{
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Statistic"];
// Stupid predicate :(
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"character == self.currentCharacter"];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"statName"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
NSError *error = nil;
// Going to crash
if (![self.fetchedResultsController performFetch:&error])
{
NSLog(@"Core Data error: %@, %@", error, [error localizedDescription]);
abort();
}
return _fetchedResultsController;
}
不知道如何创建谓词,我尝试了几种不成功的方法
答案 0 :(得分:5)
也许: [NSPredicate predicateWithFormat:@“character ==%@”,self.currentCharacter];
答案 1 :(得分:3)
你想要
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"character == %@", self.currentCharacter];