当我尝试在核心数据实体中添加记录时。
#import "ViewController.h"
#import "MagicalRecord.h"
#import "Child.h"
#import "Parent.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
Child *child = [Child MR_createEntity];
child.name = @"Child";
Parent *parent = [Parent MR_createEntity];
parent.name = @"parent";
parent.child = child;
}
Xcode会抛出如下错误。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unacceptable type of value for to-many relationship: property = "child"; desired type = NSSet; given type = Child; value = <Child: 0x7feec35bc840> (entity: Child; id: 0x7feec359af30 <x-coredata:///Child/tC70A9E87-948D-4407-AE19-73F9661A29372> ; data: {
name = Child;
parent = (
);
}).
答案 0 :(得分:0)
答案 1 :(得分:0)
从错误消息中,您似乎已将关系定义为&#34; to-many&#34;。这就是期望关系NSSet
为child
的原因(确实children
更合适)。
假设您想要多对多关系(即父级可以有多个子级),请将关系重命名为复数,如上所述,并确保模型如下所示:
Parent <--------->> Child
然后最简单的方法是设置一对一的关系:
// add a child to a parent
child.parent = parent
显然,如果由于某种原因你确实需要一对一的关系,那么检查模型是否也反映了这一点。
Parent <----------> Child