我在查询的制定中遇到了问题;这是场景:
基于这个db模式,我知道命名部分很糟糕,但事实确实如此 一个已经开始的项目,所以我要坚持下去。
现在,我的目标是选择具有确定的pack_id和某个category_id的所有字符,即类别5中包1的所有字符,所以这是我的NSPredicate
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(category_id == %@) AND (charRelationship.pack_id == %@)", [[cat valueForKey:@"category_id"] stringValue], curPack];
[request setEntity:[NSEntityDescription entityForName:@"Category" inManagedObjectContext:self.managedObjectContext]];
[request setPredicate:predicate];
NSError *error;
NSArray *result = [self.managedObjectContext executeFetchRequest:request error:&error];
一旦编译器尝试执行fetchRequest,它就会崩溃并转向SIGABRT。 我真的很讨厌xcode甚至没有给我一个关于异常的线索这一事实,所以我可以自己解决这个问题。因此,在盲目地试图修复它并没有成功之后,我想知道是否有人可以帮助我。 我已经在SO和其他地方红了很多其他线程,但我找不到任何解决方案。
非常感谢
-k -
答案 0 :(得分:1)
尝试使用ANY进行关系:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(category_id == %@) AND (ANY charRelationship.pack_id like %@)", [[cat valueForKey:@"category_id"] stringValue], curPack];
答案 1 :(得分:0)
实际上,您不得为相关联的实体单独存储任何ID。例如:在您的情况下,您可以从字符实体中引用类别,如:
[NSPredicate predicateWithFormat:@"catRel = %@", cat];
但是,我不确定您要对该代码段做什么。我是对的,你有一个存储在'cat'变量中的Category实体,并且只是从带有谓词的数据库中选择它吗?我会说,category_id已经识别出你的类别......无论如何,请尝试不使用“charRelationship.pasck_id ==%@”但是加载相应的Character实体并使用“charRelationship =%@”来放置你的实体。 / p>