ios - 本地存储数据 IOS

标签 ios caching storage

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

有什么方法可以在本地保存输入。直到用户点击提交按钮,数据才会被清除。我希望数据仍然存在,甚至重启手机或重启程序。 以 XML 格式保存?

最佳答案

有很多选项可供您选择,复杂程度如下:

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

  • 使用 sqlite 和本地数据库。 C api 可能非常冗长,但是有一个很好的 Objective-C 包装器称为 FMDB .

  • 使用 CoreData .这涉及创建本地数据模型(对象模式),然后指示 CoreData 将对象持久保存到其存储中。存储通常是 sqlite 数据库(包括 ACID 合规性——例如事务、原子性等),但 CoreData 也知道如何处理二进制和 XML 格式。

无论您使用哪种方法,我都建议使用 Data Access Object (DAO) 设计模式,它为持久化方法提供协议(protocol)。示例:

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

. .通过这种方式,可以从一种非常简单的持久性风格开始,测试您的整体架构如何集成到一个有凝聚力的应用程序中,然后稍后换成另一种更健壮的风格。 Here's an example of a file-system DAO using NSKeyedArchiver .

其他方法:

  • ActiveRecord pattern 是 Data Access Object 的替代品,并且有一些非常流行且得到良好支持的库通过 CoreData 提供此功能。使用 ActiveRecord 模式或 DAO 模式,但您可能应该避免将所有持久性代码转储到您的 View Controller 中! ;)
  • 尼克·洛克伍德 created a nice utility to make working with NSKeyedArchiving easy .
  • 对于简单的情况,您还可以使用 NSUserDefaults
  • 如果需要安全性,您可以保存到钥匙串(keychain)。同样,API 有点低级,但是有很好的包装器。 Here's one .
  • 自 NeXTSTEP 时代以来,NSDictionary提供了将自身以各种格式序列化到磁盘的方法。现代格式包括 XML、JSON、二进制。 (还有一些时髦的遗留格式,仍然可以读取,但不推荐用于写入……例如 Xcode 用来保存其 project.pbxproj 文件的格式)。

关于ios - 本地存储数据 IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951334/

相关文章:

docker - Docker 中的初始化层

java - 如何存储坐标以像六边形结构一样工作?

ios - 清除 Storyboard 中使用的标签文本

multithreading - 线程访问相同的缓存行

ios - Cordova CLI 4.0 : how to install master/nightly version of cordova-ios?

javascript - FileContentResult - 防止浏览器缓存图像

asp.net-mvc - 使用变量时 DonutOutputCache 不会清除缓存

cocoa - Core Data存储数据文件占用过多空间

iphone - 动画整数增加并停止在特定数字上

ios - Cocos2d - 更改为背景图像