【问题标题】:Core Data issue核心数据问题
【发布时间】:2011-07-03 09:16:22
【问题描述】:

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

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

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

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

感谢和问候

基数

【问题讨论】:

  • 亲爱的 Radix,请学会正确地格式化问题。您可以通过单击上面的“编辑”条目来查看它是如何完成的。
  • 请为Parent类发布你的头文件。
  • @Yuji:已经完成了兄弟,这只是我显示的代码的一部分,已经添加了父子标题。是的,我会正确地格式化我的问题.... :)

标签: iphone objective-c xcode core-data


【解决方案1】:

当关系设置为 1 - to - 1,而不是 1 - to - many 时,我收到此警告。修复关系类型修复了问题。

【讨论】:

    【解决方案2】:

    检查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);
    

    【讨论】:

    • 不,不是,ParentToChild 是一个太多的关系,但我想通过使用孩子的名字来获得母亲的名字,如果我给任何一个父母的名字,我就会得到孩子的名字跨度>
    • @Radix 您不能在一对一关系上使用枚举(for 循环)。因为没有一组对象,所以另一端只有一个对象。查看我的编辑。
    • Eureka 完成了我所做的就是为(Child p in t) { NSLog(@"%@",((Parent)(p.childToParent)) .MotherName); }
    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多