Core data 使用属性获取NSManagedObject集

Core data 使用属性获取NSManagedObject集,core-data,distinct,nsfetchrequest,Core Data,Distinct,Nsfetchrequest,如何通过请求检查特定属性来获取一组唯一的托管对象 e、 g.许多人对象,我想检索所有唯一的名称,每个唯一的名称对应一个托管对象,按名称排序。使用这样的请求怎么样 NSFetchRequest *request = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectC

如何通过请求检查特定属性来获取一组唯一的托管对象


e、 g.许多人对象,我想检索所有唯一的名称,每个唯一的名称对应一个托管对象,按名称排序。

使用这样的请求怎么样

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext];
request.entity = entity;
request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]];
request.returnsDistinctResults = YES;
request.resultType = NSDictionaryResultType;

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptors]];

NSError *error = nil;
NSArray *distinctResults = [managedObjectContext executeFetchRequest:request error:&error];
// Use distinctResults
试着让我知道


p.S.代码已启用。如果您不使用它,请在必要时调用
release

使用这样的请求怎么样

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext];
request.entity = entity;
request.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"name"]];
request.returnsDistinctResults = YES;
request.resultType = NSDictionaryResultType;

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptors]];

NSError *error = nil;
NSArray *distinctResults = [managedObjectContext executeFetchRequest:request error:&error];
// Use distinctResults
试着让我知道


p.S.代码已启用。如果您不使用它,请在必要时调用
release

@Helium3请参阅此命令还会返回出现故障的NSManagedObjects,并显示相关的可读数据。例如,是否可以使用object.someProperty访问NSManagedObject的其他属性。此外,如何应用propertiesToFetch仅搜索与其他属性(例如年龄和性别)匹配的对象中的属性。因此,仅获取特定年龄和性别的人的唯一名称?@Helium3如果您想使用任何其他属性,您必须将其添加到您在
propertiesToFetch
property中设置的数组中。我想这不会返回我要查找的结果。我想传入2个要检查的值,然后从该集合中查找唯一的名称并返回它们。如果我将这两个额外的属性传递给propertiesToFetch方法,这会不会从每个属性返回不同的值?或者将对所有三个属性进行评估,并且只返回不同的属性?谓词不应该用于获取与两个值之一匹配的对象吗?设置这样的谓词会如何影响希望通过单个属性获取的获取请求?@Helium3请参阅,此操作还会返回错误的NSManagedObjects,并返回相关的可读数据。例如,是否可以使用object.someProperty访问NSManagedObject的其他属性。此外,如何应用propertiesToFetch仅搜索与其他属性(例如年龄和性别)匹配的对象中的属性。因此,仅获取特定年龄和性别的人的唯一名称?@Helium3如果您想使用任何其他属性,您必须将其添加到您在
propertiesToFetch
property中设置的数组中。我想这不会返回我要查找的结果。我想传入2个要检查的值,然后从该集合中查找唯一的名称并返回它们。如果我将这两个额外的属性传递给propertiesToFetch方法,这会不会从每个属性返回不同的值?或者将对所有三个属性进行评估,并且只返回不同的属性?谓词不应该用于获取与两个值之一匹配的对象吗?设置这样的谓词将如何影响希望通过单个属性获取的获取请求?