首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

数据持久化(2)存取沙箱文件

2013-10-08 
数据持久化(二)存取沙箱文件最近写个小应用,在保存数据时因为数据不是很多所以选择了存取沙箱文件的方法,

数据持久化(二)存取沙箱文件

最近写个小应用,在保存数据时因为数据不是很多所以选择了存取沙箱文件的方法,在写完后写篇博客总结一下该方法的使用。


iPhone应用程序采用沙箱机制,应用程序位于文件系统的限制部分,其它程序不能访问沙盒中的内容,从而更好地保持程序的安全性和程序与程序之间的相互独立性。


沙箱(Sandbox)位于/user/applications目录下,其目录结构举例如下:

数据持久化(2)存取沙箱文件

Documents目录一般用于存放文档数据。

Library用于保存程序的配置数据,例如该目录下的Preferences文件夹中的plist文件就保存了NSUserDefaults的首选项设置。

tmp目录用于保存一些程序临时生成的数据。

WebViewServive表示该程序执行文件的快捷方式。


这一次说一说怎样使用writeToFile:atomically:方法将要保存的数据写入Documents目录下的文件当中。

首先要注意该方法的使用对象范围仅适用于:NSString,NSDate,NSNumber,NSArray,NSDictionary,NSData(以Base-64编码)等类。因此若要进行大规模的数据存取该方法并不适合。

其实该方法的使用非常简单,可以将其写成一个类并提供保存数据的接口,代码如下:

看看接口部分:



先Write,再Load后控制台输出如下:


打开mdic.plist文件:

数据持久化(2)存取沙箱文件

和写入的数据一致,没有问题。


本来是一个很简单的东西,结果搞了很久,原因是:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // 获取所有Document文件夹路径

在获取Document文件夹路径的语句中,居然把NSDocumentDirectory打成了NSDocumentationDirectory,结果writeToFile:的方法一直返回NO。

Xcode的代码补全功能很强大,但是过分的依赖也不好,输入代码时一定要看准看准。





热点排行