将具有关系的临时对象保存到managedObjectContext会导致错误1550

时间:2014-04-22 10:18:21

标签: ios objective-c object core-data

我试图关注How to Deal with Temporary NSManagedObject instances?上的信息。

对于我的数据模型,我有一个与entity2有很多关系的实体。

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Product"  inManagedObjectContext:self.managedObjectContext];
NSEntityDescription *priceEntity = [NSEntityDescription entityForName:@"Price" inManagedObjectContext:self.managedObjectContext];

Product *product = [[Product alloc]initWithEntity:entity insertIntoManagedObjectContext:nil];
Price *price = [[Price alloc]initWithEntity:priceEntity insertIntoManagedObjectContext:nil];

product.name = @"some product";
price.name = @"some price";
NSError *error;


[product addPricesObject:price];
[self.managedObjectContext insertObject:product];

if(![self.managedObjectContext save:&error])
{

    NSLog(@"%@",error.localizedDescription);
}

我从保存方法中收到错误记录"操作无法完成。 (可可错误1550。)"

如果没有设置关系,代码似乎工作正常。我的代码是否存在问题,或者在stackoverflow页面中使用答案时是否存在关系问题?

谢谢

2 个答案:

答案 0 :(得分:0)

您已将product添加到托管对象上下文,但未添加相关price。 你应该添加:

[self.managedObjectContext insertObject:price];
保存上下文之前

答案 1 :(得分:0)

我有同样的问题,我解决了。
试试这个:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Product"  inManagedObjectContext:self.managedObjectContext];
NSEntityDescription *priceEntity = [NSEntityDescription entityForName:@"Price" inManagedObjectContext:self.managedObjectContext];

Product *product = [[Product alloc]initWithEntity:entity insertIntoManagedObjectContext:nil];
Price *price = [[Price alloc]initWithEntity:priceEntity insertIntoManagedObjectContext:nil];

product.name = @"some product";
price.name = @"some price";

//first:insert to managedObjectContext (all managedObject!)
[self.managedObjectContext insertObject:product];
[self.managedObjectContext insertObject:price];

//second:add relationship
[product addPricesObject:price];

NSError *error;
if(![self.managedObjectContext save:&error])
{
    NSLog(@"%@",error.localizedDescription);
}