核心数据行主键ID用于DISTINCT列

时间:2013-10-04 09:21:29

标签: objective-c core-data core-data-migration

嗨,我是核心数据新手, 我想知道DISTINCT值的行id 我写了这样的代码:

 NSEntityDescription *entity = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.mangedContext];
[request setEntity:entity];  // Set NSEntityDescription object to FetchRequest
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctResults:YES];
[request setPropertiesToFetch:@[@"studentName"]];
NSError *requestError = nil;
NSArray*array = [mangedContext executeFetchRequest:request error:&requestError];

我在这里获得学生姓名 看起来像这样

{
    studentName = xxxx;

},.

但我需要Total Row或该StudentName = xxxx的行ID;

请帮帮我

先谢谢。

2 个答案:

答案 0 :(得分:1)

当您使用CoreData时,您使用对象进行管理,因此没有主键或行ID,但您创建的每个实体都有一个objectID。 因此,如果您从请求中收到实体学生,那么您可以通过访问其属性student.objectID

来获取该ID

答案 1 :(得分:0)

NSEntityDescription *entityDescription = [NSEntityDescription
                                              entityForName:@"Student"  inManagedObjectContext:self.mangedContext];
    NSFetchRequest *fetch = [[NSFetchRequest alloc] init];

    [fetch setEntity:entityDescription];
    [fetch setResultType:NSDictionaryResultType];
    [fetch setReturnsDistinctResults:YES];

    NSError *error = nil;

    NSArray *studentDetails =[self.mangedContext executeFetchRequest:fetch error:&error]; // Here you will get entire student table values.

// Use your NSManagedObject and get particular field value(for ex, id, name)
Student *student =  [studentDetails objectAtIndex:0];
NSNumber *studentId = student.stuId;