一.沙盒机制

每个应用程序位于文件系统的严格限制部分

每个应用程序只能在为该程序创建的文件系统中读取文件

每个应用程序在iOS系统内斗放在了统一的文件夹目录下

沙盘路径的位置

1. 通过Finder查找程序沙盘相对路径

~/Library/Application Support/iPhone Simulator

2. 通过代码查找程序沙盘相对路径

NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory directory,NSSearchPathDomainMask domainMask,BOOL expandTilde);

常见问题:

模拟器路径内有可能包含多个系统版本的路径

NSDocumentDirectory————>Documents文件夹

NSDocumentationDirectory——>Documentation文件夹   //不属于iOS  是Mac-os x中使用

NSTemporaryDirectory()———>tmp文件夹

NSLibraryDirectory——————>Library文件夹

二.简单对象写入文件

文件存储的相对目录

//获取所有的documents文件夹

NSArray *documentList =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

//将最后一个documents文件夹路径作为问价的存储目录

NSString *documentsPath = documentList.lastObject;

字符串对象写入文件

数组对象写入文件

字典对象写入文件

二进制对象写入文件

三.复杂对象写入文件

什么是复杂对象

1.在Foundation框架内不存在的数据类

2.无法在程序内通过writeToFile类型的方法写入到文件内

3.复杂对象至少包含一个实例对象

构造复杂对象的生成类

@interface ABPersonInfo : NSObject

@property (nonatomic ,retain) NSString *name;

@property (nonatomic ,retain) NSNumber *age;

@end
@implementation ABPersonInfo
@end

NSCoding协议

@protocol NSCoding
- (void)encodeWithCoder:(NSCoder *)aCoder;

- (id)initWithCoder:(NSCoder *)aDecoder;

@end

使复杂对象接受NSCoding协议

@interface ABPersonInfo:NSObject<NSCoding>

使复杂对象实现NSCoding协议

@implementation ABPersonInfo

- (id)initWithCoder:(NSCoder *)aDecoder{

self = [super init]; if (self) {

self.age = [aDecoder decodeObjectForKey:@"age"];

self.name = [aDecoder decodeObjectForKey:@"name"]; }

return self; }

- (void)encodeWithCoder:(NSCoder *)aCoder{

[aCoder encodeObject:self.age forKey:@"age"]; [aCoder encodeObject:self.name forKey:@"name"];

}

@end

将复杂对象ABPersonInfo的实例对象写入文件

转载于:https://www.cnblogs.com/limicheng/p/3876673.html

UI学习笔记---第十四天数据持久化相关推荐

  1. Windows保护模式学习笔记(十四)—— 阶段测试

    Windows保护模式学习笔记(十四)-- 阶段测试 题目一 解题步骤 题目二 解题步骤 题目一 描述:给定一个线性地址,和长度,读取内容 int ReadMemory(OUT BYTE* buffe ...

  2. python数据挖掘学习笔记】十四.Scipy调用curve_fit实现曲线拟合

    #2018-03-28 10:02:08 March Wednesday the 13 week, the 087 day SZ SSMR python数据挖掘学习笔记]十四.Scipy调用curve ...

  3. Spring Security技术栈学习笔记(十四)使用Spring Social集成QQ登录验证方式

    上一篇文章<Spring Security技术栈开发企业级认证与授权(十三)Spring Social集成第三方登录验证开发流程介绍>主要是介绍了OAuth2协议的基本内容以及Spring ...

  4. 深度学习笔记(十四)—— 超参数优化[Hyperparameter Optimization]

      这是深度学习笔记第十四篇,完整的笔记目录可以点击这里查看.      训练神经网络会涉及到许多超参数设置.神经网络中最常见的超参数包括: the initial learning rate lea ...

  5. Slicer学习笔记(十四)vtkMRMLVolumeNode 与 vtkImageData

    Slicer学习笔记(十四)vtkMRMLVolumeNode 与 vtkImageData 1.Adding in MRML to Slicer 2.MRML Scene 3.MRML Nodes ...

  6. OpenCV学习笔记(十四):重映射:remap( )

    OpenCV学习笔记(十四):重映射:remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系,这种映射关系有两种,一种是计算原图像任意像素在映射后图像的坐标位置,另一种是计算变换后 ...

  7. QT学习笔记(十四):QLayout的属性介绍

    QT学习笔记(十四):QLayout的属性介绍 主要包括QBoxLayout.和QGridLayout以及QFormLayout等的参数类似. 我主要说明一下QGridLayout在QtDesigne ...

  8. MATLAB学习笔记(十四)

    MATLAB学习笔记(十四) 一.线性方程组求解 1.1 直接法 1.1.1 利用左除运算符 1.1.2 利用矩阵分解 1.2 迭代法 1.2.1 雅可比(Jacobi)迭代法 1.2.2 高斯-赛德 ...

  9. Cty的Linux学习笔记(十四)

    Linux学习笔记--第十四篇 环境变量配置文件: /etc/profile:预设了几个重要的变量,例如PATH,USER,LOGNAME,MAIL,INPUTRC,HOSTNAME,HISTSIZE ...

最新文章

  1. 分享一个数据库工具DTOOLS
  2. Maven系列--setting.xml 配置详解
  3. kubernetest master 节点恢复灾备恢复操作指南
  4. win7家庭版远程桌面补丁_无需惊慌!微软漏洞数月后再被“预警”打补丁即可防御...
  5. Win7系统下调整硬盘分区大小给C盘更多的空间
  6. php stomp rabbitmq,php实现通过stomp协议连接ActiveMQ操作示例
  7. cygwin清屏技巧
  8. 关于趋势科技防毒墙网络版的卸载
  9. 计算机键盘正确指法操作方法,键盘指法,图文详解键盘指法练习方法
  10. 图像的特征提取——HOG特征、Harr特征、LBP特征
  11. MySQl 5.7版本的Data文件夹,my.ini文件,Uploads文件夹所在目录
  12. ‘adb‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  13. Lyx使用对中文进行编译
  14. 闲谈IPv6-没有选项胜有选项的TLV
  15. 计算机二级Office科目方向软件套组安装指南MS Office+WPS
  16. 帮忙写基于SSM框架的购物商城管理系统
  17. 三天打鱼两天晒网问题Java解法
  18. window.showModalDialog不兼容解决办法
  19. 单摆运动模拟程序C语言,单摆C语言程序代码
  20. Win10激活Office2013的技巧

热门文章

  1. JAVASE图书系统期末试题
  2. Canvas 渐变特效
  3. 挖洞技巧:APP手势密码绕过思路总结
  4. xlrd.biffh.XLRDError: Excel xlsx file; not supported报错
  5. 《剑指offer》从尾到头打印链表
  6. Hbase写数据,存数据,读数据的详细过程
  7. Scala中zip或者zipWithIndex的计数器用法
  8. javaweb学习总结(十八):JSP属性范围
  9. 深入理解java中的Soft references amp;amp; Weak references amp;amp; Phantom reference
  10. c#跨线程操作控件(有UI操作)|及多线程操作