NSPredicate,获得一个一对多关系的子集的结果
我没有解决与核心数据和NSFetchedResultsController
。
我的数据模型看起来像这样:
具有一对多关系的产品称为dataLines
。 dataLine
实体有一个属性名称theWeek
。
我想获取dataLines.theWeek == someValue
所有Product
。 这很容易通过子查询完成。 但是这将返回所有dataLines。 是否有可能创build一个NSPredicate
返回Product
和一个子集,如果dataLines只与dataLines == someValue
?
你想达到什么可以通过两种方式达到:
使用SUBQUERY
[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18]];
或ANY修饰符
[NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", [NSNumber numberWithInt:18]];
如果您需要检查多个值,则还可以执行以下操作:
[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@ or $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18], [NSNumber numberWithInt:19]];
同样可以应用于ANY
修饰符。 ANY ... OR ANY ...
也许如果你分享一些代码,我们可以帮你。
PS我想你不使用标量值和theWeek
是一个数字。
希望能帮助到你。
你应该获取dataLine
属性。 假设你的Product
和dataLine
实体通过关系someRelation
连接,那么你可以尝试这个代码;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; [fetchRequest setEntity:[NSEntityDescription entityWithName:@"dataLine" inManagedObjectContext:self.managedObjectContext]]; [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"dataLines.week == %@",theWeek]]; NSMutableArray *tmpProduct [[NSMutableArray init] alloc]; NSMutableArray *tmpArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; for (dataLine *theDataLine in tmpArray); NSLog(@"%@",theDataLine.someRelation.name); tmpProduct = theDataLine.someRelation.name;
那么你可以调用tmpProduct
来调用或在表格视图中显示你的产品
为“产品”实体创build一个提取请求:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; [fetchRequest setEntity: [NSEntityDescription entityForName:@"Product" ...]]
然后使用“ANY”产品的属性/属性创build谓词:
[fetchRequest setPredicate: [NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", <whatever week>]];
然后执行获取以至less得到一个<whatever week>
的产品数组。
一般见“获取pipe理对象”,NSPredicate和相关文档。
- 如何在Core Data中有效地插入和获取UUID
- 从设备上删除应用程序后,无法创buildNIL模型的NSPersistentStoreCoordinator
- 我是否需要启用WAL模式将.SQLite从包复制到Document目录?
- iOS swift:使用coredata(cloudkit)存储caching
- 如何在iOS 9.0 Beta中实现新的Core Data模型构build器的“独特”属性
- 当涉及多个设备时,CoreData iCloud Migration会“丢失”数据
- CoreData:按类别集中的索引sorting项目
- 将核心数据与iCloud同步 – 不包括实体
- NSIncrementalStore以普通英语解释