我试图关注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页面中使用答案时是否存在关系问题?
谢谢
答案 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);
}