本地化数据

原创 2016年08月30日 16:31:08

本地化数据是一个项目中比较重要的一部分。今天自己来整理下数据本地化的一些知识,方便以后使用

本地化数据的基本方法:1、plist文件(属性列表)2、preference(偏好设置)3、NSKeyedArchiver(归档)4、SQLite    5、CoreData

在整理以上这些方法之前,先整理下iOS本地目录的一些基本知识。沙盒的一些纯理论知识就不在写了。百度一下很多的。

一、沙盒

1、沙盒的目录结构

Documents // iTunes会备份该目录下的内容
Library
        Caches // iTunes不会备份该目录下的内容
        Preferences // iTunes会备份该目录下的内容
tmp//程序退出后该目录会被清空

2、获取目录的路径的方法

 NSArray *bundleDocumentPathArr = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  //NSCacheDirectory NSLibraryDirectory

 NSString *bundleDocumentPathStr = [bundleDocumentPathArr objectAtIndex:0];


NSString *temporyaryPath = NSTemporaryDirectory();
    NSLog(@"temporyaryPath--%@",temporyaryPath);

3、NSSearchPathForDirectoriesInDomains方法参数介绍

    // NSSearchPathDirectory directory: 第一个参数指定了搜索的路径名称,NSDocumentDirectory表示是在Documents中寻找.NSCacheDirectory的话就是在cache文件中寻找.
    //NSSearchPathDomainMask domainMask 第二个参数限定了文件的检索范围只在沙箱内部.其意义为用户电脑主目录.也可以修改为网络主机等.
    //BOOL expandTilde 最后一个参数决定了是否展开波浪线符号.展开后才是完整路径,这个布尔值一直为YES.

二、文件操作

NSFileManager *fileManager =[NSFileManager defaultManager];

NSString *documentsPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject] stringByAppendingPathComponent:@"Picture"];

NSString *fileName =[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject] stringByAppendingPathComponent:@"Picture/123.plist"];

创建文件

[fileManager createFileAtPath:fileName contents:nil attributes:nil];

创建文件夹:[fileManager createDirectoryAtPath:documentsPath withIntermediateDirectories:YES attributes:nil error:nil]

attributes:介绍

  • NSFileAppendOnly

      这个键的值需要设置为一个表示布尔值的NSNumber对象,表示创建的目录是否是只读的。

  • NSFileCreationDate

      这个键的值需要设置为一个NSDate对象,表示目录的创建时间。

  • NSFileOwnerAccountName

      这个键的值需要设置为一个NSString对象,表示这个目录的所有者的名字。

  • NSFileGroupOwnerAccountName

      这个键的值需要设置为一个NSString对象,表示这个目录的用户组的名字。

  • NSFileGroupOwnerAccountID

      这个键的值需要设置为一个表示unsigned int的NSNumber对象,表示目录的组ID。

  • NSFileModificationDate

      这个键的值需要设置一个NSDate对象,表示目录的修改时间。

  • NSFileOwnerAccountID

      这个键的值需要设置为一个表示unsigned int的NSNumber对象,表示目录的所有者ID。

  • NSFilePosixPermissions

      这个键的值需要设置为一个表示short int的NSNumber对象,表示目录的访问权限。

  • NSFileReferenceCount

      这个键的值需要设置为一个表示unsigned long的NSNumber对象,表示目录的引用计数,即这个目录的硬链接数。

      这样,通过合理的设计attributes字典中的不同键的值,这个接口所创建的目录的属性就会基本满足我们的需求了。

三、plist文件

1、可以保存以下类型的数据

NSArray;
NSMutableArray;
NSDictionary;
NSMutableDictionary;
NSData;
NSMutableData;
NSString;
NSMutableString;
NSNumber;
NSDate;
2、将内容写入文件中

NSDictionary *dic = @{@"loginAtuo":@"1"};
[dic writeToFile:fileName atomically:YES];

存储时使用writeToFile: atomically:方法。 其中atomically表示是否需要先写入一个辅助文件,再把辅助文件拷贝到目标文件地址。这是更安全的写入文件方法,一般都写YES。

3、读取文件中的内容

NSDictionary *dic2 = [NSDictionary dictionaryWithContentsOfFile:fileName];

四、Preference 就是NSUserDefaults

  • 偏好设置是专门用来保存应用程序的配置信息的,一般不要在偏好设置中保存其他数据。

  • 如果没有调用synchronize方法,系统会根据I/O情况不定时刻地保存到文件中。所以如果需要立即写入文件的就必须调用synchronize方法。

  • 偏好设置会将所有数据保存到同一个文件中。即preference目录下的一个以此应用包名来命名的plist文件。

版权声明:我写的东西你要用,应该告诉我一声。。

相关文章推荐

Spark性能调优之——在实际项目中调节数据本地化等待时长

PROCESS_LOCAL:进程本地化, 代码和数据在同一个进程中,也就是在同一个executor中;计算数据的task由executor执行,数据在executor的BlockManage...

iOS开发————数据本地化方式之SSKeychain

转自:http://www.cnblogs.com/m4abcd/p/5242254.html  并对此博主表示感谢! 我的邮件:m4email@163.com 如果有这篇文章对您有...

android app 读取本地.db文件,实现不变数据本地化(附小demo)

今天是正月十三,作为寿星的我依然奋斗在工作中,醉了。-------------喧嚣的成人世界,守住本真的心。 在项目中,有一部分数据,虽然是从接口拿取的,但是这些数据有个特点,就是一般不会再去改变...

iOS开发————数据本地化存储方式之Keychain

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,key...

54.性能调优之调节数据本地化等待时长

本文为《Spark大型电商项目实战》 系列文章之一,主要介绍在实际项目中通过调节数据本地化等待时长进行性能优化。

iOS数据本地化

一. 使用NSKeyedArchiver类操作对象的存取       特点:该类可以将对象以键值对的形式存入文件,并通过key从文件中取出,与android中的SharedPreference用...

数据本地化存储之NSUserdefaults,plist文件,归档解档,数据库sqlite(FMDB)

数据本地化存储 一.文件 sandbox NSHomeDirectory(); 二.plist 属性文件 Plist本质上是一个xml文件,来保存我们的数据 -------------写入pl...

spark性能调优之调节数据本地化等待时长

本地化级别 PROCESS_LOCAL:进程本地化,代码和数据在同一个进程中,也就是在同一个executor中;计算数据的task由executor执行,数据在executor的BlockManag...

Sqlite的数据本地化tips

实现数据本地化的步骤 1..设计模型   根据实际的业务需求,设计出model层。这个就不用多说了,直接上代码。 @property(strong,nonatomic)NSString *group...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)