由於數據庫結構有點複雜,我很難解決這個謂詞問題。我有以下的數據庫結構,或者至少是值得關注的一個問題:複雜的NSPredicate遍歷多個實體和關係類型
PUBLISHER < < --- >>公關< < --BOOK < < --->作者< < - >>代理
我試過以下謂詞,當我遍歷過去的關係時使用過,但沒有達到這個程度。我要指出,我有一個NSArray與代理商的名字,我想查詢對數據庫,以確定出版社代理的工作原理與列表:
NSArray *agentNames = [NSArray arrayWithObjects:Dan, Hunter, Sloan, Jackson];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Publisher" inManagedObjectContext:context];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor
sortDescriptorWithKey:@"publisherName" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] ];
request.predicate = [NSPredicate predicateWithFormat:@"ANY pubHouse.publicist.assignedBook.authorRep.agentName IN %@", [agentNames valueForKey:@"agentName"]];
request.fetchBatchSize = 20;
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
當我運行前面的謂語我得到以下警告:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'unimplemented SQL generation for predicate : ANY pubHouse.publicist.assignedBook.authorRep.agentName IN
我相信,當我將書實體關係傳送到作者實體,然後到達代理實體時謂詞會中斷。在這一點上,建議會有所幫助。由於
你的NSArray agentNames中有哪些變量? NSManagedObject的子類?字典? – Mundi
您的實體之間的所有關係是否只是定期的舊關係,或者是關於它們的任何「特別」?另外,'authorRep.agentName'看起來有點好奇。 'agentName'真的是你作者代理關係的名字嗎?還是你的意思是像'authorRep.agent.agentName'? –
這是從前一個視圖控制器傳遞的一個Agent對象數組,用戶可以選擇他們想要查詢的代理。我以前用這種方法取得了成功。我在這個問題中以這樣一種方式顯示了示例數組,以幫助那裏的優秀的撒瑪利亞人明白我想要完成的事情。感謝您付出的努力。 – dman