具有表的视图层次结构中单元格值的持久性



我将解释我的场景:我有一个自定义类,其属性旨在通过表单获取用户提供的信息

@interface CustomClass : NSObject
@property NSInteger iD;
@property (strong, nonatomic) NSString *profilePicUrl;
@property (strong, nonatomic) NSString *email;
@property (strong, nonatomic) NSString *firstName;
@property (strong, nonatomic) NSString *lastName;
@property (strong, nonatomic) NSString *address; 
@property NSInteger zipCode;
@property (strong, nonatomic) NSMutableArray *products;
@property BOOL isEnabled;
@end

该窗体由三个具有UITableView的视图组成,它们各自的视图控制器位于UINavigationController内。这样,它就像一个多步骤表单:有一个第一个视图请求用户输入,然后导航到第二个视图请求输入,然后在提交所提供的数据之前导航到显示信息的第三个视图。导航栏的"后退"按钮已启用,因此用户可以返回到上一步来完成/更改输入。

表格的单元格有不同的类型,与我描述的自定义类的属性相对应:其中一些单元格有一个文本字段(例如,用于输入名字和姓氏的单元格),另一些单元格有开关("isEnabled"属性),而我有一个单元格,其中有一个按钮显示UIImagePickerController以拍照(用于个人资料图片的单元格)。

我想创建我的CustomClass的一个实例,并在表单的第三步完成它的数据以提交它。一部分信息在第一个视图中请求(个人资料图片、电子邮件、名字和姓氏),其余信息在第二个视图中要求(地址、邮政编码、产品),所以我需要通过导航层次结构的三个视图控制器传递CustomClass对象。

我的问题是:当用户输入单元格中的值时,我应该如何管理这些值的持久性?我应该以某种方式将CustomClass属性"绑定"到每个相应的单元格吗?我希望用户能够在表单中来回移动,并保留她已经输入的数据。看起来我在文本字段中键入的值会被保留,如果我从第一个视图导航到第二个视图,然后再回到第一个视图,文本字段的值会保留,但不会保留单元格的其余内容。如果应用程序突然终止,我不希望用户再次输入所有信息,该怎么办?注意:我的应用程序必须支持iOS 5。

管理这种情况的最佳方式应该是什么?谢谢

您必须将信息保存在CustomClass中。您可以通过将其写入纯文本文件、属性列表或使用数据库,甚至使用NSUserDefaults基础结构来实现这一点。

只要输入了数据,就应立即进行保存,例如在textField:didEndEditing和此类回调中。您将更新CustomClass对象的属性,然后将其持久化。

最新更新