我正在尝试实现我确定已经实现了一百万次的东西,即在核心数据数据库中进行搜索,并使用afetchRequestController
和the在表中显示searchController
。
我的问题是写NSPredicate
的NSFetchRequest
。根据NSPredicate
Apple的指南,核心数据并不是您在Sqlite中可以做的所有事情。我一直在尝试寻找解决方案,但是也许你们中的一个可以利用他的经验来帮助我。
CoreData DB描述:与Shops
有着“多对多”关系DiscountProgam
。
我的用例如下:我需要过滤出Shops
谁的姓名/地址/邮政编码/城市包含搜索字符串。那是容易的部分。困难的部分是创建要过滤的数据库部分,因为我有一个“活动” discountPrograms
UID数组,并且我只希望shops
在其“ discountPrograms”集中有一个活动折扣程序。因此在伪代码中将是:
从Shops
谁至少有一个discountProgram
谁的UID在activeDiscountProgramsArray
其中名称/地址/邮编/城市CONTAINS搜索字符串
这可能吗?我是否超过谓词的极限?如果是这样,我该怎么做呢?
是的,NSPredicate
可以分析提取目标实体的直接属性及其关系的属性。尝试:
NSArray *validUIDs = ...;
NSString *searchTerm = ...;
[NSPredicate predicateWithFormat:@"(name CONTAINS[cd] %@ OR zip CONTAINS[cd] %@) AND (SUBQUERY(discountProgram, $d, $d.UID IN %@).@count > 0)", searchTerm, searchTerm, validUIDs];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句