Objective c 核心数据委托保存模式

Objective c 核心数据委托保存模式,objective-c,ios,core-data,Objective C,Ios,Core Data,我在iOS中使用CoreData。 我有一个模态AddViewController,代理是RootViewController 我应该在根控制器中保存托管对象上下文,还是在实际的模态控制器本身中保存托管对象上下文 我看到了将数据传递回rootViewController的示例,但看不出这将如何处理数据验证失败或需要托管对象上下文的更复杂场景 // AddViewController.m - (void)save { [[self delegate] controller:(id)contr

我在iOS中使用CoreData。 我有一个模态AddViewController,代理是RootViewController

我应该在根控制器中保存托管对象上下文,还是在实际的模态控制器本身中保存托管对象上下文

我看到了将数据传递回rootViewController的示例,但看不出这将如何处理数据验证失败或需要托管对象上下文的更复杂场景

// AddViewController.m

- (void)save
{
  [[self delegate] controller:(id)controller didFinishWithSave:(BOOL)save withName(NSString *)name;
}

// RootViewController.m

- (void)controller:(id)controller didFinishWithSave:(BOOL)save
{
  if (save)
  {
    // save context
  }
  [self dismissModalViewControllerAnimated:YES];
}
目前,我正在使用委托协议解除模态。 关于最佳实践有什么建议吗?
从体系结构的角度来看,您应该创建一个单独的管理器类,负责核心数据操作。从技术角度来看,只要在数据来源的同一个线程上进行保存(root或modal VC),保存在何处并不重要。

我知道这有点晚了,但对于遇到此问题的其他人,我想对Levend的答案补充一点

是的,您应该有一个单独的管理器类来处理操作(可能是类本身)

我认为,如果您的模态需要处理验证,那么在调用委托之前,它将验证对象。如果它有错误,你可以马上处理。如果它通过了验证,则可以将有效对象传递给委托。因此,委托可以假设传递给它的任何对象都是有效的

至于你应该把它保存在哪一类,我认为这只是一种偏好。但我建议您在核心数据模型本身中使用一种保存方法


我最近遇到的一件事是,它应该有助于管理CoreData类。我还没有厌倦它,但听起来不错。

考虑到MVC,我会让M(odel)执行上下文保存以及从中获取数据