我是Core数据的新手,我在搜索时遇到了麻烦。
我的数据结构如下所示:
Server --one-to-many--> Category --many-to-many--> Cube
我的想法是获取服务器对象,获取server.category集并绘制其立方体。
现在我需要在这个模型中搜索。我想按立方体名称搜索并获取:
包含此名称的多维数据集的服务器对象指定类别(或该名称包含此单词)。
我是这样想的:
NSPredicate * defaultPredicate = [NSPredicate predicateWithFormat:@"ANY SELF.defaultFlag = %@ AND ANY SELF.category.cube.title = %@", [NSNumber numberWithInt:1], text];
但是它给了我一个
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'multiple to-many keys not allowed here'
如何做到这一点。
编辑:
如果我有例如: 一个服务器DemoServer whit 3 Category(Category1,Category2,Category3)和那些类别各有3个立方体(Test,cube11,cube12),(cube21,cube22,cube23),(Test,Cube32,Test)
我搜索:测试(立方体标题)我想得到
DemoServer whit 2类别(Category1,Category3)和那些将有多维数据集(Test),(Test,Test)
答案 0 :(得分:0)
嵌套到多个关系的谓词有点复杂。 “明显的”谓词
[NSPredicate predicateWithFormat:@"ANY category.cube.title = %@", text]
如果“类别”和“立方体”都是多对子关系,则不起作用。
您需要的是一个子信息:
[NSPredicate predicateWithFormat:@"SUBQUERY(category, $cat, ANY $cat.cube.title = %@).@count > 0", text]
结合您的其他谓词:
[NSPredicate predicateWithFormat:@"defaultFlag = %@ AND SUBQUERY(category, $cat, ANY $cat.cube.title = %@).@count > 0",
[NSNumber numberWithInt:1], text]