Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何查询核心数据中按唯一值分组的值?_Ios_Objective C_Core Data - Fatal编程技术网

Ios 如何查询核心数据中按唯一值分组的值?

Ios 如何查询核心数据中按唯一值分组的值?,ios,objective-c,core-data,Ios,Objective C,Core Data,考虑上述模型与许多关系 让我们假设我正在查询患者姓名为“xyz”的托管对象(有多条“xyz”记录) 如何获取唯一的“xyz”作为字典对象,并在该字典中重复使用“xyz”管理对象作为对象 到目前为止,我能够得到不同的值,也能够得到托管对象的数组,其中“xyz”是谓词字符串 但我想不出一种方法来获取字典数组,它的对象是具有重复值的托管对象 我希望有一个字典数组,其唯一值为字典名,字典中的对象应为托管对象/字典 谁能帮我一下吗。我会提供更多的解释,如果有任何部分不明白 谢谢 #pragma mark

考虑上述模型与许多关系

让我们假设我正在查询患者姓名为“xyz”的托管对象(有多条“xyz”记录)

如何获取唯一的“xyz”作为字典对象,并在该字典中重复使用“xyz”管理对象作为对象

到目前为止,我能够得到不同的值,也能够得到托管对象的数组,其中“xyz”是谓词字符串

但我想不出一种方法来获取字典数组,它的对象是具有重复值的托管对象

我希望有一个字典数组,其唯一值为字典名,字典中的对象应为托管对象/字典

谁能帮我一下吗。我会提供更多的解释,如果有任何部分不明白

谢谢

#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;

}