核心数据代表保存模式
问题描述:
我在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];
}
就在此刻,我正在使用委托协议解散模态。 有关最佳实践的任何建议? 谢谢
答
我知道这有点晚了,但对于遇到此问题的其他人,我会在Levend的答案中再增加一点。
是的,你应该有一个单独的管理类来处理操作(可能是类本身)。
我会认为,如果你的模态需要处理验证,在调用委托之前,它会验证对象。如果有错误,你可以在那里处理。如果它通过验证,那么你可以将有效的对象传递给委托。因此,代表可以假设任何传递给它的对象都是有效的。
至于你应该保存哪一类,我认为这只是一个偏好。但是我建议你在核心数据模型本身有一个保存方法。
我最近遇到的是mogenerator,它应该可以帮助管理CoreData类。我还没有累,但听起来不错。
答
从架构的角度来看,您应该创建一个单独的管理员类负责核心数据操作。从技术角度来看,只要您在数据源所在的同一个线程上执行操作,则无需保存(root或modal VC)。
答
考虑到MVC,我会让M(odel)执行上下文的保存以及从中读取数据。