我正在开发一个应用程序,其中使用core data。现在我需要创建一个主键,就像我们在sqlite中创建的那样(自动递增类型)。在core data中是否可能实现这一点?如果可以,那么该如何操作?有任何链接或建议吗?
谢谢 Mrugen
由于Core Data是一个持久化框架,而不是通用的数据库,因此它抽象了主键。
你可以使用NSManagedObject的objectID属性来获取对象的唯一标识,这样做可以方便地引用该对象。
+ (NSInteger) getMaxUserID
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *res = [NSEntityDescription entityForName:ENTITY_USER
inManagedObjectContext:[DataBaseManager sharedInstance].managedObjectContext];
[request setEntity:res];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"userID" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptors release];
[sortDescriptor release];
[request setFetchLimit:1];
NSError *error = nil;
NSArray *results = [[DataBaseManager sharedInstance].managedObjectContext executeFetchRequest:request error:&error];
[request release];
if (results == nil) {
NSLog(@"error fetching the results: %@",error);
}
NSInteger maximumValue = 0;
if (results.count == 1) {
CDUser *result = (CDUser *)[results objectAtIndex:0];
maximumValue = [result.userID integerValue];
}
return maximumValue;
}