核心数据:NSP预测多对多关系。 (“这里不允许的多键”)
我有两个实体,分别是“分类”和“文章”,它们之间有多对多的关系。 我想形成一个谓词,它searchcategory.name等于某个值的所有文章。 我有以下几点:
NSEntityDescription *entityArticle = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:managedObjectContext]; NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"categories.name == [cd] %@", category.name]; [request setSortDescriptors:sortDescriptors]; [request setEntity:entityArticle]; [request setPredicate:predicate]; NSMutableArray *results = [[managedObjectContext executeFetchRequest:request error:nil] mutableCopy]; if ([results count] > 0) NSLog(@"Results found."); else NSLog(@"NO results found."); [request release]; [sortDescriptor release]; [sortDescriptors release];
我收到的错误是*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'
有没有任何选项来检索所需的数据?
您正试图将集合( categories.name
)与标量值( category.name
)进行比较。 您需要使用集合比较器( CONTAINS
),或者使用谓词修饰符( ANY
/ ALL
/ SOME
等)。
尝试使用:
[NSPredicate predicateWithFormat:@"ANY categories.name =[cd] %@", category.name];
要么:
[NSPredicate predicateWithFormat:@"categories.name CONTAINS[cd] %@", category.name];