NSDocument、NSUserDefaults、plist

一,简单介绍一下常用的plist文件。

全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。
Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息




二,先说文件保存到的几个位置:

1,工程沙盒里(就是程序user Document文件夹下,以读取文件,写入文件方式)

2,工程自身里(就是在工程里手动创建一个如.plist文件,把固定的内容写入,这个需要人工手动写入)

3,工程沙盒里(保存到user Document下,不过不需要读写文件,用系统的 NSUserDefaults 可以快速保存添加读取删除基本数据类型,类似于android里的Sharedpreferences 


先看截图吧



控制台输出的为工程下plist文件和沙盒文件的路径,前缀都是统一的,只是到了程序的文件夹后,一个是appName.app,另一个是Documents下。所以存放位置还是不一样的。

首先说一下,工程下的.plist是我们不能在代码中写入的,可以读取,但是不可以写入(目前我是这样的结论,猜测应该是apple为了安全限制的),所以,代码中进行文件写等操作只能在沙盒路径下的文件中操作。

(程序常用固定数据,比如离线地图数据,各城市经纬度信息等需要我们绑定到程序里(比UserDocument安全),那么,可以代码循环写入,把.plist写在沙盒内,然后手动copy到工程目录下,这样就不用我们手动添加啦)


三,三种方式的读写操作。


1-1,创建plist文件。

按command +N快捷键创建,或者File —> New —> New File,选择Resource 下的Property List

1-2,工程路径plist文件读取。


    //path 读取当前程序定义好的provinces.plist省份城市文件  
     NSString *path = [[NSBundle mainBundle] pathForResource:@"provinces" ofType:@"plist"];  
      
     NSDictionary *data = [NSDictionary dictionaryWithContentsOfFile:path];  
     self.provincesContent = [NSArray arrayWithArray:[data objectForKey:@"province"]];//array数组的名称就叫province  

1-3,读取后赋值给我们相应的数据类型,就可以直接使用了,就是这么简单。



2-1,沙盒路径plist文件的读取。


  1. NSArray *patharray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2.   
  3. NSString *path =  [patharray objectAtIndex:0];  
  4.   
  5. NSString *filepath=[path stringByAppendingPathComponent:@"provinces.plist"];//添加我们需要的文件全称  
  6.   
  7. //获取此路径下的我们需要的数据(NSArray,NSDictionary,NSString...)  
  8. NSMutableArray *rootArray = [NSMutableArray arrayWithContentsOfFile:filepath];//注意,如果想添加新的数据,需要NSMutable类型的  
2-2,如果document里没有此文件,会自动创建,读取赋值后,便可使用,同时可以add,update,和remove,具体看上面的截图,一目了然。


3-1,NSUserDefaults快速读写,利用系统提供的方法,我们可以快速保存简单数据类型,如用户登录用户名密码。


  1. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];//获取标准函数对象  
  2. NSMutableDictionary *defaultcoordinate = [defaults objectForKey:@"default_coordinate"];//通过对象获取名称下NSMutableDictionary数据  
  3. NSString *currentCity = [defaultcoordinate objectForKey:@"c_name"];  
      3-2,增删改,一看便会。


  1. [defaults setObject:@"kaka" forKey:@"newdata"];//添加id对象类型数据  
  2. [defaults objectForKey:@"newdata"];//获取对象类型数据  
  3.   
  4. [defaults setDouble:2013 forKey:@"double"];//添加double类型数据  
  5. [defaults doubleForKey:@"double"];//获取double类型数据  
  6.   
  7. [defaults setBool:NO forKey:@"BOOL"];//添加BOOL类型数据  
  8. [defaults boolForKey:@"BOOL"];//获取BOOL类型数据  
  9.   
  10. [defaults setInteger:12 forKey:@"int"];//添加int类型数据  
  11. [defaults integerForKey:@"int"];//获取int类型数据  
  12.   
  13. [defaults setFloat:0.23 forKey:@"float"];//添加Float类型数据  
  14. [defaults floatForKey:@"float"];//获取float类型数据  
  15.   
  16. [defaults removeObjectForKey:@"newdata"];//删除对象数据  

3-3,操作之后记得Synchronize同步操作,否则偶然会因为别的线程占大量内存而没有保存成功

  1. [defaults synchronize];  


四,沙盒文件打开的方法:

1,可以通过 系统带的 终端工具,在bash命令行模式定位到

2,Finder菜单-前往 此时按住键盘的:option按键,就会显示出:资源库,点击进入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值