iOS:保存核心数据多个视图

时间:2012-05-23 00:57:58

标签: ios core-data

我是iOS开发的新手 - 我正致力于在不同的视图之间传递数据......

假设我列出了十个问题。每个问题都有一个不同的页面,其间有一个转换,UI将包含一个上一个/下一个按钮以及为每个问题收集的输入。

如何在“步骤”中显示每个问题并收集数据,然后最终将所有内容保存为Core Data模型中的一个条目?

你能指导我完成这项工作吗?非常感激!谢谢!

2 个答案:

答案 0 :(得分:1)

正如inafziger提到的,最好在最后一次调用保存数据时使用单例,但不是在每个视图的末尾,因为这会提高性能。听起来好像数据与整个应用程序相关。

如果是这种情况我会把你的:

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain) NSPersistentStoreCoordinator *persistentStoreCoordinator;

在您的应用程序委托内部,这样您就可以从任何地方访问它们,如果您需要从上一个问题中获取信息,您可以轻松地执行该操作。

我希望这有帮助

修改  (关于你的评论)

假设您对每个问题都有相同或相似的布局,您可以使用不同的参数推送相同ViewController的新实例,即

UIViewController* myNewVC = [UIViewController alloc] init];
[myNewVC setQuestion:self.question+1];
[[AppDelegate sharedDelegate].navigationController pushViewController:myNewVC animated:YES]

或类似上面的内容,请注意,UITableViewController始终是UIViewController,但UIViewController并不总是UITableViewController。

这样您每次都可以显示一个新问题并重复使用完全相同的ViewController 对于每个问题

答案 1 :(得分:0)

我会将问题存储在数据模型中,问题实体具有属性问题编号。然后我会让我的视图控制器在ivar中跟踪当前的问题编号。每次前进或后退时,您可以递增或递减当前的问题编号,并从核心数据中获取问题。

我强烈建议您避免将代码的不同部分耦合到您的应用代理。相反,Apple鼓励您通过设置属性或使用委托模式将必要的数据结构从视图控制器传递到视图控制器。