use*_*270 7 core-data nsmanagedobjectcontext ios
我一直试图找出这个问题2天了.我试图保存时不断收到错误.
//self.data is NSManagedObject. kAppDelegate.moc is the managed object context.
self.data = [NSEntityDescription insertNewObjectForEntityForName:@"Data"
inManagedObjectContext:kAppDelegate.moc];
[self.data setValue:[NSNumber numberWithBool:NO] forKey:@"isit"];
[self.data setValue:@"" forKey:@"name"];
NSError *error;
if(![self.data.managedObjectContext save:&error])
{
NSLog(@"Save did not complete successfully. Error: %@",
[error localizedDescription]);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它出现在控制台中:
"CoreData:错误:将托管对象0x10935d4c0(0x10935d420)从其上下文中删除后进行变更."
还有这个:
保存未成功完成.错误:(null)
我无法弄清楚为什么会发生这种情况,或者为什么错误是"空".
鉴于此错误:
2015-07-06 06:15:05.124 xxx[3609:796500] CoreData: 错误:从上下文中删除托管对象 0x17423d3e0 (0x1740d0450) 后对其进行更改。
成立:
就我而言;初始化序列的跟踪(使用断点和日志消息 class_initial:%B:%H)显示我创建了两次上下文。我的解决方案是简单地将冗余调用重定向到 self.managementObjectContext。稍后我可能会花一些时间来追踪并消除冗余逻辑。
初步结果:
最终结果
推荐:
对于遇到此问题的其他人,我建议仔细检查核心数据堆栈的初始化序列。上下文可能会创建两次,或者托管对象可能会被删除。