Ios 如何查询核心数据中按唯一值分组的值?
考虑上述模型与许多关系 让我们假设我正在查询患者姓名为“xyz”的托管对象(有多条“xyz”记录) 如何获取唯一的“xyz”作为字典对象,并在该字典中重复使用“xyz”管理对象作为对象 到目前为止,我能够得到不同的值,也能够得到托管对象的数组,其中“xyz”是谓词字符串 但我想不出一种方法来获取字典数组,它的对象是具有重复值的托管对象 我希望有一个字典数组,其唯一值为字典名,字典中的对象应为托管对象/字典 谁能帮我一下吗。我会提供更多的解释,如果有任何部分不明白 谢谢Ios 如何查询核心数据中按唯一值分组的值?,ios,objective-c,core-data,Ios,Objective C,Core Data,考虑上述模型与许多关系 让我们假设我正在查询患者姓名为“xyz”的托管对象(有多条“xyz”记录) 如何获取唯一的“xyz”作为字典对象,并在该字典中重复使用“xyz”管理对象作为对象 到目前为止,我能够得到不同的值,也能够得到托管对象的数组,其中“xyz”是谓词字符串 但我想不出一种方法来获取字典数组,它的对象是具有重复值的托管对象 我希望有一个字典数组,其唯一值为字典名,字典中的对象应为托管对象/字典 谁能帮我一下吗。我会提供更多的解释,如果有任何部分不明白 谢谢 #pragma mark
#pragma mark - Search Patients By Patient Name
-(NSArray*)GetBillsForPatientwith:(NSString*)name{
NSMutableArray *AllBillsData = [[NSMutableArray alloc]init];
NSArray *_strings = [self GetSplitStrings:name];
NSManagedObjectContext *context = [CoreDataManager GetCoreDataManager].managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:_Claims inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"patient_FirstName" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSMutableArray *subPredicates = [NSMutableArray array];
for (NSString *strings in _strings) {
[subPredicates addObject:
[NSPredicate predicateWithFormat:@"patient_FirstName CONTAINS[cd] %@ OR patient_LastName contains[cd] %@",strings,strings]];
}
NSCompoundPredicate *predicate_ = [[NSCompoundPredicate alloc]initWithType:NSOrPredicateType subpredicates:subPredicates];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setPredicate:predicate_];
fetchRequest.returnsDistinctResults = YES;
fetchRequest.resultType = NSDictionaryResultType;
fetchRequest.propertiesToFetch = [NSArray arrayWithObjects:[[entity propertiesByName] objectForKey:@"patient_FirstName"],[[entity propertiesByName] objectForKey:@"patient_LastName"], nil];
//fetchRequest.propertiesToGroupBy = [NSArray arrayWithObjects:[[entity propertiesByName] objectForKey:@"patient_FirstName"],[[entity propertiesByName] objectForKey:@"patient_LastName"], nil];
NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle the error.
}
for (NSDictionary *names in fetchedObjects) {
// [AllBillsData addObject:names];
[AllBillsData addObject:[self GetCorrespondingClaimsForNames:names]];
}
return AllBillsData;
}
//Entangled Method
-(NSArray*)GetCorrespondingClaimsForNames:(id)Names{
NSManagedObjectContext *context = [CoreDataManager
GetCoreDataManager].managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:_Claims inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"patient_FirstName" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
NSMutableArray *subPredicates = [NSMutableArray array];
[subPredicates addObject:
[NSPredicate predicateWithFormat:@"patient_FirstName ==[cd] %@ AND patient_LastName ==[cd] %@",[Names valueForKey:@"patient_FirstName"],[Names valueForKey:@"patient_LastName"]]];
NSCompoundPredicate *predicate_ = [[NSCompoundPredicate alloc]initWithType:NSOrPredicateType subpredicates:subPredicates];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setPredicate:predicate_];
NSError *error;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
// Handle the error.
}
return fetchedObjects;
}