我正在使用核心数据应用程序,我的查询是我与父关系有子关系,父关系与子关系,并且在父实体中检查了多关系,
所以现在我的查询是我想要访问父母的名字,让我们通过给孩子的名字来说母亲姓名,所以我在这里使用谓词这是我的代码的视图
-(void)retrieveviaPredicate
{
NSFetchRequest *fetchReq = [[NSFetchRequest alloc]init];
[fetchReq setEntity:[NSEntityDescription entityForName:@"Child"
inManagedObjectContext:self.managedObjectContext]];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"Childname=='ravi'"];
[fetchReq setPredicate:pred];
NSArray *t = [self.managedObjectContext executeFetchRequest:fetchReq error:nil];
for(Child *p in t)
{
NSLog(@"%@",p.Childname);
for(Parent *p1 in p.childToParent)
{
NSLog(@"Mother name is %@",p1.MotherName);
}
}
}
在上面的代码中,我收到一条警告,说明
warning: NSManagedObject' may not respond to '-countByEnumeratingWithState:objects:count:
当我运行应用程序时,应用程序向南移动,你能不能帮我解决这个问题
谢谢和问候
基数
答案 0 :(得分:0)
检查childToParent
是否为多人关系。我猜不是。
for循环只有在它是多对多关系时才有效:
for(Parent *p1 in p.childToParent)
编辑:
如果替换
会发生什么for(Parent *p1 in p.childToParent)
{
NSLog(@"Mother name is %@",p1.MotherName);
}
带
NSLog(@"Mother name is %@",p.childToParent.MotherName);
答案 1 :(得分:0)
当关系设置为1对1而不是1对多时,我收到了此警告。修复关系类型修复了问题。