我是CoreData的新手,因此我编写了一个简单的程序来了解有关交互以及工作原理的更多信息 - 但我一直收到错误。 我有两个实体,"父母"和"孩子"与多对多关系(父母可以有很多孩子)。
基本上,当我添加一个新的孩子时,我需要关联它,添加,父。如果我使用Parent实体预先填充ComboBox,我没有任何问题,一切都按计划进行。但是,除非我放两个组合框,否则我只能添加一个父组件。因此,我需要能够获取Parent,然后添加。这就是错误的来源。
代码:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc}init];
NSEntityDescription *entity = [[NSEntityDdescription entityForName:@"Parent" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormate:@"firstName like[cd] %@", nameValue];
[fetchRequest setPredicate: predicate];
NSArray *result = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
NSManagedObject aParent = [results objectAtIndex:0];
NSLog(@"First name: %@", [aParent valueForKey:@"firstName"]); //This does yield the correct information in NSLog
NSManagedObject *newChild = [.....];
[newChild setValue:name forKey:@"firstName"];
//No error to this point, but when I do the next line I receive the error
[newChild setValue:aParent forKey:@"parentName"];
我尝试过访问NSSet,NSMutableset等等......我已经阅读了我可以在网上找到的所有Apple CoreData书籍,但没有任何作用。
我已经在这个问题上被困了好几天了,任何建议都会非常感激。
答案 0 :(得分:0)
嗯,事实证明我的代码是正确的。我忘记了我的CoreData设置中的一个小/重要细节,我没有将关系设置为多对多。我以为我有,但是我想我应该仔细检查一下。
无论如何,上面的代码在我改变关系后工作得很好。