UI学习笔记---第十四天数据持久化
一.沙盒机制
每个应用程序位于文件系统的严格限制部分
每个应用程序只能在为该程序创建的文件系统中读取文件
每个应用程序在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的实例对象写入文件

UI学习笔记---第十四天数据持久化的更多相关文章
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- Python学习笔记(十四)
Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- 如鹏网学习笔记(十四)ASP.NET
Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...
- Android学习笔记(十四)——自定义广播
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们除了可以通过广播接收器来接收系统广播, 还可以在应用程序中发送自定义的广播.下面我们来分别试一试发送自定义 ...
- Dynamic CRM 2013学习笔记(十四)复制/克隆记录
经常有这样的需求,一个单据上有太多要填写的内容,有时还关联多个子单据,客户不想一个一个地填写,他们想从已有的单据上复制数据,克隆成一条新的记录.本文将介绍如何克隆一条记录,包括它的子单据以生成一条新的 ...
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
随机推荐
- 绑定本地Service并与之通信-----之二
import android.os.Bundle;import android.os.IBinder;import android.app.Activity;import android.app.Se ...
- POJ 1753 Flip Game 状态压缩,暴力 难度:1
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4863 Accepted: 1983 Descript ...
- K2上海总部技术培训分享笔记
第一部门 WinDdg 入门指南 1.NGen.exe --> native code 预编译,省去了.NET程序编译器JIT过程,是程序第一次运行也非常快. NGen 参考资料:http:// ...
- 跨域SSO的实现
翻译自CodeProject网站ASP.NET9月份最佳文章:Single Sign On (SSO) for cross-domain ASP.NET applications. 翻译不妥之处还望大 ...
- Visual Studio 中的头文件、源文件和资源文件都是什么?有什么区别??
头文件:后缀为.h,主要是定义和声明之类的,比如类的定义,常量定义源文件:后缀.cpp,主要是实现之类的,比如类方法的实现资源文件主要是你用到的一些程序代码以外的东西,比如图片之类,或者菜单.工具栏之 ...
- Oracle Database 11g express edition
commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...
- @ResultMapping注解
@RequestMapping注解1.url映射放在方法上:@RequestMapping("/itemsEdit")2.窄化url请求映射放在类上,定义根路径,url就变成根路径 ...
- C# 3.0 扩展方法[转载]
实践 扩展方法是C# 3.0中新加入的特性.MSDN中对扩展方法的定义是:扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 以下以 ...
- AutoReleasePool 和 ARC 以及Garbage Collection
AutoReleasePool autoreleasepool并不是总是被auto 创建,然后自动维护应用创建的对象. 自动创建的情况如下: 1. 使用NSThread的detachNewThread ...
- IIS使用问题
1.System.Data.SQLite”或它的某一个依赖项.试图加载格式不正确的程序:修改IIS应用程序池的高级设置将32位设置成true