【第22期】观点:IT 行业加班,到底有没有价值?

本地化数据

原创 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文件。

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

相关文章推荐

数据本地化级别

Property Name Default Meaning       spark.locality.wait 3s How long to wait to launch a ...

Silverlight - RIA Services服务端数据验证与本地化

上一篇blog谈到了RIA Services 使用Data Annotation进行数据验证时的本地化挑战及解决方案。使用Data Annotation可以将验证放在Silverlght端执行。有些数据验证尤其是需要查询数据库的业务逻辑验证,需要在服务端执行,并返回验证信息,此类验证信息的本地化如何...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

使用正则表达式验证本地化数据

Doug Tidwell , 高级程序员, IBM 大学合作部2006 年 1 月 04 日本文讨论将正则表达式与 Java ResourceBundle 相结合的一种数据验证技术。Java 语言对正...

CakePHP: 本地化选择框里面的数据

If you have a configurable list in table(t_credit_types) like: 1->Gold 2->Silver 3->Bronze and you have get all data from that t...

UISenior之数据的本地化持久化

数据的本地化主要分为两个方面:1.简单数据的本地持久化(NSString、NSArray、NSDictionary、NSData)2.复杂数据的本地持久化(本文以Person类为例) 简单对象的本地...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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