我是Core Data的新手 . 我正在尝试使用Core Data创建员工数据库 . 我将用户名和他的生日存储在实体 Employee
中,员工可以拥有 multiple 个电话号码 . 所以我创建了另一个实体 PhoneNumbers
来存储电话号码 . 我已经为这两个实体 Build 了关系 . 但是当我尝试为员工插入两个电话号码时,只有第二个电话号码与员工有关系 .
我不知道如何改变我的核心数据模型 .
这就是我将数据插入核心数据的方式 .
NSManagedObject *entry = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:_managedObjectContext];
[entry setValue:@"Suresh" forKey:@"name"];
[entry setValue:[NSDate date] forKey:@"birthdate"];
NSManagedObject *phoneEntry = [NSEntityDescription insertNewObjectForEntityForName:@"PhoneNumbers" inManagedObjectContext:_managedObjectContext];
[phoneEntry setValue:@"9600492944" forKey:@"phone"];
[phoneEntry setValue:entry forKey:@"owner"];
[entry setValue:phoneEntry forKey:@"phone"];
NSError *error = nil;
if (![_managedObjectContext save:&error]) {
NSLog(@"hi %@", [error localizedDescription]);
}
NSManagedObject *phoneEntry1 = [NSEntityDescription insertNewObjectForEntityForName:@"PhoneNumbers" inManagedObjectContext:_managedObjectContext];
[phoneEntry1 setValue:@"1234567890" forKey:@"phone"];
[phoneEntry1 setValue:entry forKey:@"owner"];
[entry setValue:phoneEntry1 forKey:@"phone"];
if (![_managedObjectContext save:&error]) {
NSLog(@"hi %@", [error localizedDescription]);
}
3 回答
那是因为你没有正确设置关系 . 正如您在附加的屏幕截图中看到的那样,它显示指向电话号码的单箭头(如此>),而不是2个箭头(如此>>) . 因此,单击Employee实体,单击电话关系 . 您可以在右侧看到工具栏,单击关系按钮(第三个)设置 Type as to Many . 它会解决你的问题 . 此外,如果您希望自动删除与此人相关的电话号码实体,请设置 Delete Rule to Cascade . 希望能帮助到你 .
你的关系必须是一对一的 - 从你的截图我发现你有一对一的关系 . 重新定义关系,它应该工作 .
在您的coredata模型中,选择员工实体中的关系电话并将其类型更改为“To Many”...它将创建Employee和PhoneNumbers之间的关系作为一对多关系 .
更改以上内容后,您可以为员工存储多个电话号码......