dav*_*ryn 3 core-data objective-c nspredicate ios
我试图找到包含对对象图中单独对象组合的引用的对象的所有实例。
recommendation
Run Code Online (Sandbox Code Playgroud)
可能包含以下三个对象中的一个或多个:
damageType
areaDamaged
validVehicles
Run Code Online (Sandbox Code Playgroud)
该结构是通过导入现有系统的文件格式构建的,我无法重组对象图。
我使用 来NSPredicate查找recommendation具有damageType匹配选定损坏的所有对象,如下所示:
NSFetchRequest *fetchRequestDamages = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Recommendation class])];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY damageType == %@", _currentRecordedDamage.damageType];
Run Code Online (Sandbox Code Playgroud)
但希望过滤器返回所有Recommendations与特定 匹配的内容damageType,areaDamaged并且validVehicle
我试过了
NSMutableArray *predicates = [[NSMutableArray alloc] initWithCapacity:2];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY damageType == %@", _currentRecordedDamage.damageType];
[predicates addObject:predicate];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"ANY areaDamaged == %@", _currentAreaDamaged];
[predicates addObject:predicate2];
NSPredicate *predicate3 = [NSPredicate predicateWithFormat:@"ANY validVehicles == %@", _currentVehicle];
[predicates addObject:predicate3];
fetchRequestDamages.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
fetchRequestDamages.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequestDamages managedObjectContext:[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController.delegate = self;
NSError *error;
[self.fetchedResultsController performFetch:&error];
int resultsFound = self.fetchedResultsController.fetchedObjects.count;
Run Code Online (Sandbox Code Playgroud)
但似乎这返回满足任何谓词的所有对象的集合 - 我想要匹配所有三个的对象的集合。
我正在考虑使用SUBQUERY但不太明白如何创建这个查询?
只需用“AND”将三个谓词组合起来即可找到与所有谓词匹配的对象:
NSArray *predicates = ... // your array of predicates
NSPredicate *finalPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
[fetchRequestDamages setPredicate:finalPredicate];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |