Ios 多对多关系中的核心数据搜索
我是新的核心数据,我有一些麻烦,我的搜索 我的数据结构如下所示:Ios 多对多关系中的核心数据搜索,ios,search,core-data,nspredicate,Ios,Search,Core Data,Nspredicate,我是新的核心数据,我有一些麻烦,我的搜索 我的数据结构如下所示: Server --one-to-many--> Category --many-to-many--> Cube 我的想法是获取服务器对象,获取server.category集并绘制其立方体 现在我需要在这个模型中搜索。我想按多维数据集名称搜索并获取: 包含此名称或名称包含此单词的多维数据集的类别的服务器对象 我试着这样做: NSPredicate * defaultPredicate = [NSPre
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包含3个类别Category1、Category2、Category3,这些类别分别有3个多维数据集Test、cube11、cube12、cube21、cube22、cube23、Test、Cube32、Test
我搜索:我想得到的测试立方体标题
DemoServer有两个类别Category1、Category3,这些类别将包含多维数据集Test、Test、Test谓词,其中嵌套了多个关系,这有点复杂。 明显谓词
[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]
@MarkoZadravec:它就像子查询的局部变量$cat依次设置为每个相关类别元素。不幸的是,子查询几乎没有文档记录,所以这个问题一点也不愚蠢:-谢谢,还有两个问题。现在它没有崩溃,但根本找不到行,第二个问题是,在任何SELF.defaultFlag=%@和前面都不起作用SUBQUERY@MarkoZadravec:什么是defaultFlag?它是服务器的一个属性吗?为什么在这里使用任何?是defaultFlag是服务器的属性。我认为ANY是必需的,所以我会查询所有带有defaultFlag==1的服务器。所有我的查询看起来像“选择不同的0,t0.Z_PK,t0.Z_OPT,t0.ZDEFAULTFLAG,t0.ZHOST,t0.ZNAME,t0.ZPASSWORD,t0.ZPORT,t0.ZPROTOCOL,t0.ZSERVERID,t0.ZTOKEN,t0.ZUSERNAME从ZSERVER t0中选择COUNTt1.Z_PK从ZCATEGORY t1中选择JOIN Z_1CUBE t2在t1.Z_PK=t2.Z_1CATEGORY在t2.Z_2CUBE=t3.Z_PK中选择COUNTt1.Z_PK=t1.ZSERVER和t3.ZTITLE=?>?'