我有客户端实体和作业实体。核心数据谓词一对多和多对一的问题
每个工作都可以有一个客户。客户端的作业(客户端< - >>作业)的关系称为jobOfClient。
每个客户都可以有很多工作。客户的工作(工作< < - >客户)的关系称为clientOfJob。
(当然,这些都是反向关系。)
我有一些正在工作的谓词,但最后一个没有。留出一些fetchedResultsController的设置,这里有一些代码的关键行的三种情况:
在这里,我通过排序工作,寻找未与任何客户端的作业:
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Job" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"clientOfJob == nil"];
这里我理清工作,寻找一个特定的客户端的工作:
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Job" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"clientOfJob == %@", userState.selectedClient];
但这下一个不能正常工作。在这里,我通过客户端进行排序,查找与所选作业关联的一个客户端(如果没有相关客户端,则返回无结果,但这里不是这种情况)。
NSEntityDescription * entity = [NSEntityDescription entityForName:@"Client" inManagedObjectContext:dataInterface.managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"jobOfClient == %@", userState.selectedJob];
错误消息终止应用程序由于未捕获的异常“NSInvalidArgumentException”,原因:“一对多这里不允许钥匙”
一定有什么微妙的在这里,我不明白。有人可以帮助我提供**我提供的信息吗?
谢谢。我能够使用这个解决问题:NSPredicate * predicate = [NSPredicate predicateWithFormat:@“ANY jobOfClient ==%@”,userState.selectedJob]; - 任何关键字都会导致它查看集合中的所有内容。 – Jim