【发布时间】:2012-01-31 06:42:35
【问题描述】:
我在核心数据中有一个名为 element 的超级实体,并有两个名为 (IsBoolean,IsGrade) 的子实体,我尝试从下面的代码中访问这些子实体属性。我需要您对此问题的帮助
--------------------- 核心数据结构-------- 超级实体 [Element->elmentID] 子实体 [IsBoolean->value] + [IsGrade->value]
---------------------- 简要代码 ----------- -----
NSFetchRequest *formRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *formEntity = [NSEntityDescription entityForName:@"Element" inManagedObjectContext:ManagedObjectContext];
NSSortDescriptor *formDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"elementID" ascending:YES];
NSPredicate *formPredicate = [NSPredicate predicateWithFormat:@"elementID==%d",2];
[formRequest setPredicate:formPredicate];
[formRequest setEntity:formEntity];
[formRequest setSortDescriptors:[NSArray arrayWithObject:formDescriptor]];
[formRequest setIncludesSubentities:YES];
resultController_= [[NSFetchedResultsController alloc] initWithFetchRequest:formRequest managedObjectContext:ManagedObjectContext sectionNameKeyPath:nil cacheName:nil ];
resultController_.delegate =self;
for (Element *elementData in resultController_) {
// I can access super entity attribute
NSlog(@"%@",elementData.elementID);
// Here i can't access sub entity attribute from super entity
NSLog(@"%@",elementData.value);
}
找到以下datamodel的屏幕截图
【问题讨论】:
-
所以您的子实体的成绩元素 ID 也为 2?这似乎是一个不寻常的结构,并且将实体类称为 isBoolean 之类的名称会非常令人困惑。如果您获取的对象只是一个元素而不是您的子实体之一,那么您的代码也会在 elementData.value 上崩溃(不是给编译器警告吗?)。
-
这是我在这里写的但没有编译的简短代码,我的问题是我如何从超级实体访问子实体属性是否可行?
标签: iphone ios ios4 core-data core-data-migration