gpt4 book ai didi

ios - 试图保存 NSManagedObjectContext 不工作

转载 作者:可可西里 更新时间:2023-11-01 03:31:13 24 4
gpt4 key购买 nike

我已经尝试解决这个问题 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]);
}

当我运行它时,它出现在控制台中:

"CoreData: error: Mutating a managed object 0x10935d4c0 (0x10935d420) after it has been removed from its context."

还有这个:

Save did not complete successfully. Error: (null)

我不明白为什么会这样,或者为什么错误是“null”。

最佳答案

鉴于此错误:

2015-07-06 06:15:05.124 xxx[3609:796500] CoreData:错误:从上下文中删除托管对象 0x17423d3e0 (0x1740d0450) 后对其进行突变。

发现:

就我而言;初始化序列的痕迹(使用断点和日志消息 class_initial:%B:%H)表明我创建了两次上下文。我的解决方案是简单地将冗余调用重定向到 self.managedObjectContext。稍后我可能会花时间追踪并消除冗余逻辑。

初步结果:

  1. d: 初始化(modelName:):1
  2. mext: findInStore(_:):1
  3. mext: findInStore(_:sortDescriptors:predicate:):1
  4. 下一个:NSManagedObject:1
  5. d:context 数据存储:1
  6. d:persistentStoreCoordinator :1
  7. d: 托管对象模型:1
  8. d: 应用文档目录:1
  9. mext: createInStore(_:):1
  10. 下一个:NSManagedObject:2
  11. d:context 数据存储:2

最终结果

  1. 数据库:初始化(模型名称:数据库名称:):1
  2. d: 初始化(modelName:):1
  3. mext: findInStore(_:):1
  4. mext: findInStore(_:sortDescriptors:predicate:):1
  5. 下一个:NSManagedObject:1
  6. d:managedObjectContext managedObjectContext:1
  7. d:persistentStoreCoordinator :1
  8. d: 托管对象模型:1
  9. d: 应用文档目录:1

建议:

对于遇到此问题的其他人,我建议仔细检查您的核心数据堆栈的初始化顺序。上下文可能会创建两次,或者托管对象可能会被删除。

关于ios - 试图保存 NSManagedObjectContext 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24965458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com