我有一个使用Core Data的项目。有一个名为CDGroup的实体与一个名为CDChapter的实体有一对多的关系,这种关系称为章节。它们都有相应的类(NSManagedObject的子类。)
当我检索CDGroup对象时,它的类是CDGroup,这是正确的,但问题是,如果我然后尝试访问该组的章节集,如下所示:
NSLog(@"%@",[group.chapters objectAtIndex:0].name);
我收到错误,因为检索的章节是NSManagedObject类型而不是CDChapter。我已经尝试将章节转换为正确的类,但我仍然遇到同样的问题。
我如何使这项工作?
谢谢,
乔
答案 0 :(得分:2)
您不能对投射对象使用点表示法。将呼叫分成两行:
CDChapter *chapter = [[group.chapters allObjects] objectAtIndex:0];
NSLog(@"%@",chapter.name);
或者使用访问器方法而不是点符号:
NSLog(@"%@",[(CDChapter*)[[group.chapters allObjects] objectAtIndex:0] name]);
答案 1 :(得分:0)
章节指的是属于该关系的NSSet对象。尝试使用:
((CDChapter*)[[group.chapters allObjects] objectAtIndex:0]).name;