在本地存储数据IOS

我有一个UIViewController供用户input他们的数据并提交给我们的ASP.NET Webapi。 有大约40个textField和其他控件。

有什么办法可以保存input本地。 在用户点击提交button之前,数据将不会被清除。 我希望数据仍然存在,甚至重新启动手机或重新启动程序。 保存在XML中?

有很多选项可以select,其复杂程度如下:

  • 使用NSKeyedArchiver保存到本地文件系统。 这涉及到使您的模型类符合NSCoding协议。

  • 使用sqlite和本地数据库。 C api可以是非常详细的,但是有一个很好的Objective-C包装器,叫做FMDB 。

  • 使用CoreData 。 这涉及到创build本地数据模型(对象模式),然后指示CoreData将对象保存到其存储。 存储通常是一个sqlite数据库(包括ACID兼容性 – 例如事务,primefaces性等),但是CoreData也知道如何执行二进制和XML格式。

无论使用哪种方法,我都build议使用数据访问对象 (DAO)devise模式,该模式为持久性方法提供协议。 例子:

- (Customer*) findCustomByLastName:(NSString*)lastName - (void) save:(Customer*)customer 

。 。 通过这种方式,可以从一个非常简单的持久性风格开始,testing整个架构如何集成到一个有凝聚力的应用程序中,然后在另一个更强大的风格中进行交换。 这是一个使用NSKeyedArchiver的文件系统DAO的例子 。

其他方法

  • ActiveRecord模式是数据访问对象的替代品,并且有一些非常受欢迎且支持良好的库,这些库提供了CoreData。 使用ActiveRecord模式或DAO模式,但可能应该避免在视图控制器中转储所有的持久性代码! ;)
  • 尼克·洛克伍德创造了一个很好的工具,使NSKeyedArchiving工作变得容易 。
  • 对于简单的情况,你也可以使用NSUserDefaults
  • 如果需要安全,您可以保存到钥匙串。 API又是低层次的,但是有很好的包装。 这是一个 。
  • 自NeXTSTEP日子以来, NSDictionary提供了以各种格式将自身序列化到磁盘的方法。 现代格式包括XML,JSON,二进制。 (还有一些时髦的遗留格式,仍然可以被读取,但不赞成写入,比如Xcode用来保存project.pbxproj文件)。

您可以将数据存储在NSUserDefaults或SQLite数据库中。 我build议SQLite,但它完全取决于您的需要。 在YouTube /苹果开发者文档中有很多关于如何做到这一点的教程

看看领域

直接在手机,平板电脑或可穿戴设备中运行的移动数据库。 Realm让您可以更快地构build应用程序,构build速度更快的应用程序,并制作以前不可能的体验。