● 沙盒根目录:NSString *home = NSHomeDirectory(); ● Documents:(2种⽅方式)

● 利用沙盒根目录拼接”Documents”字符串
NSString *home = NSHomeDirectory();
NSString *documents = [home stringByAppendingPathComponent:@"Documents"];// 不建议采用,因为新版本的操作系统可能会修改目录名

● 利⽤NSSearchPathForDirectoriesInDomains函数
// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符“~”
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO); // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素

NSString *documents = [array objectAtIndex:0];

● tmp:NSString *tmp = NSTemporaryDirectory();

● Library/Caches:(跟Documents类似的2种⽅方法)

● 利用沙盒根目录拼接”Caches”字符串

● 利⽤NSSearchPathForDirectoriesInDomains函数(将函数的第2个参数改 为:NSCachesDirectory即可)

● Library/Preference:通过NSUserDefaults类存取该目录下的设置信息

相应的代码:

 1 #import "NJViewController.h"2 #import "NJPerson.h"3 4 @interface NJViewController ()5 - (IBAction)saveDataBtnClick:(id)sender;6 - (IBAction)readDataBtnClick:(id)sender;7 8 @end9
10 @implementation NJViewController
11 /**
12  *   点击保存按钮
13  */
14 - (IBAction)saveDataBtnClick:(id)sender {
15
16     // youtube做法
17 //    NSString *path = @"/Users/apple/Library/Application Support/iPhone Simulator/7.1/Applications/A6D53E11-DDF0-4392-B2D4-FE77A96888A6/Documents/abc.plist";
18
19     // 获取应用程序根目录
20     NSString *home = NSHomeDirectory();
21
22     // 不建议写/
23     //NSString *path = [home stringByAppendingString:@"/Documents"];
24     // 不建议Documents写死
25     //NSString *path = [home stringByAppendingPathComponent:@"Documents"];
26
27     // NSUserDomainMask 在用户目录下查找
28     // YES 代表用户目录的~
29     // NSDocumentDirectory 查找Documents文件夹
30     // 建议使用如下方法动态获取
31     NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
32     // 拼接文件路径
33     NSString *path = [doc stringByAppendingPathComponent:@"abc.plist"];
34     NSLog(@"%@", path);
35
36
37     //NSArray *arr = @[@"lnj", @"28"];
38     //[arr writeToFile:path atomically:YES];
39
40     // NSDictionary *dict = @{@"name": @"lnj", @"age":@"28"};
41     // 调用writeToFile将数据写入文件
42     // [dict writeToFile:path atomically:YES];
43
44     /*
45      plist只能存储系统自带的一些常规的类, 也就是有writeToFile方法的对象才可以使用plist保存数据
46      字符串/字典/数据/NSNumber/NSData ...
47      */
48
49     // 自定义的对象不能保存到plist中
50     NJPerson *p = [[NJPerson alloc] init];
51     p.name =@"lnj";
52
53     NSDictionary *dict = @{@"person": @"abc"};
54     [dict writeToFile:path atomically:YES];
55 }
56 /**
57  *   点击读取按钮
58  */
59 - (IBAction)readDataBtnClick:(id)sender {
60     NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
61
62     NSString *path = [doc stringByAppendingPathComponent:@"abc.plist"]
63     ;
64     // 读取数据
65     NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:path];
66     NSLog(@"%@", dict);
67 }
68 @end

五、属性列表

● 属性列表是一种XML格式的文件,拓展名为plist

● 如果对象是NSString、NSDictionary、NSArray、NSData、 NSNumber等类型,就可以使用writeToFile:atomically:⽅法 直接将对象写到属性列表文件中

转载于:https://www.cnblogs.com/LifeTechnologySupporter/p/9774702.html

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)相关推荐

  1. iOS开发UI篇—IOS开发中Xcode的一些使用技巧

    iOS开发UI篇-IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新建项目 cmd + n             新建文 ...

  2. iOS开发UI篇—ios应用数据存储方式(偏好设置)

    一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用都有个NSUserDefaults实例,通过它来存取偏 ...

  3. iOS开发UI篇—iOS开发中三种简单的动画设置

    [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要"参与到"动画中 [UIView beginAnimations: ...

  4. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇-UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  5. iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序

    iOS开发UI篇-使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: 1 //2 // YY ...

  6. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

  7. iOS开发UI篇—实现UITableview控件数据刷新

    iOS开发UI篇-实现UITableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运 ...

  8. iOS开发UI篇—UITableviewcell的性能优化和缓存机制

    iOS开发UI篇-UITableviewcell的性能问题 一.UITableviewcell的一些介绍 UITableView的每一行都是一个UITableViewCell,通过dataSource ...

  9. iOS开发UI篇—Date Picker和UITool Bar控件简单介绍

    iOS开发UI篇-Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何 ...

最新文章

  1. MVC使用Flash来显示图片
  2. 半透明父视图,小程序不透明
  3. 配置文件没有关闭保护模式_配置文件:PS自带的海量滤镜 | 照片调色宝典13
  4. 编译预处理 -- 带参数的宏定义--【原创】
  5. 设置mysql整形_mysql 整型字段设计
  6. 5.11 加权Gram-Schmidt 分解
  7. 山东理工OJ【2121】数据结构实验之链表六:有序链表的建立(插排法)
  8. 计算机图形学Web前端笔记-定位并移动到指定坐标点(two.js理论及实现)
  9. 慕课python第六周测验答案_中国大学慕课答案第八单元测试答案_Python语言程序设计考试测验答案...
  10. EXCEL数据组合的用法
  11. 2022年贵州省职业院校技能大赛中职组网络安全赛项规程
  12. 【性能测试】记一次性能测试
  13. 535. TinyURL 的加密与解密 : 设计一个 URL 简化系统
  14. uploadFile+nginx实现上传图片(Windows/Linux均可用)
  15. [工作交接]--如何优雅地交接工作
  16. 交换机hybrid模式
  17. 两分钟速览谷歌2023IO大会:AI军备竞争,全线出击
  18. node.js毕业设计微信签到小程序(源码+程序+LW+部署)
  19. 锐捷客户端下虚拟机VMware无法联网的问题
  20. 日期格式化的时候mm和MM有啥区别;yyyy-MM-dd和yyyy-mm-dd 有啥区别、yyyyMMddHHmmss

热门文章

  1. CentOS下LAMP一键yum安装脚本
  2. 【Spark Summit EU 2016】使用Spark轻松获取高产量基因组
  3. div+css背景渐变色代码示例
  4. 《现代教育技术》Win8版发布 项目总结
  5. HDU 1847 Good Luck in CET-4 Everybody!(组合博弈)
  6. C++ unique
  7. 整理一下这几天找到的一些好东西~
  8. 安装Exchange Server2016管理工具
  9. DAS,SAN,NAS
  10. 收集的一些操作系统面试题