核心数据问题

时间:2011-02-24 08:15:24

标签: iphone objective-c xcode core-data

我正在使用核心数据应用程序,我的查询是我与父关系有子关系,父关系与子关系,并且在父实体中检查了多关系,

所以现在我的查询是我想要访问父母的名字,让我们通过给孩子的名字来说母亲姓名,所以我在这里使用谓词这是我的代码的视图

-(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:

当我运行应用程序时,应用程序向南移动,你能不能帮我解决这个问题

谢谢和问候

基数

2 个答案:

答案 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对多时,我收到了此警告。修复关系类型修复了问题。