沙盒路径下存储和读取数据 缓存文件、偏好设置文件、plist文件

2024-05-14 20:48

本文主要是介绍沙盒路径下存储和读取数据 缓存文件、偏好设置文件、plist文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、plist存储
// 获取应用文件夹路径
NSString *homePath = NSHomeDirectory();
//获取document文件夹的路径
//函数的作用:在某个范围内搜索一个文件夹的路径
//directory:获取哪个文件夹
//NSUserDomainMask:在用户的范围内查找
//expandTilde:YES:展开 。No,不展开,~会把沙盒路径替换
NSString *docPath = NSSeachPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0];//文件所在的文件夹路径
//拼接上文件
NSString *filePath = [docPath stringByAppendingPathComponent:@“arr.plist”];
//创建数组,将数组写入文件
NSArray *arr = @[@“12”,@“34”];
[arr writeToFile:filePath atomically:YES];
//从文件中读取出数组
NSArray *arr = [NSArray arrayWithContentsOfFile:filePAth];
2、偏好设置存储
// 偏好设置: [NSUserDefaults standardUserDefaults] 专门用来偏好设置存储
// 偏好设置:快速进行一些键值对的存储,底层封装方式:就是包装了一个字典
// 偏好设置:不需要关心文件名
// 偏好设置的注意点: ios8 之前,通常我们需要做一个操作,同步:把缓存的数据同步到硬盘
//写入到偏好设置
[[NSUserDefaults standardUserDefaults] setObject:@“xiaoming” forKey:@“name”];
//ios8之前一定要做同步:把缓存的数据及时同步到硬盘
[[NSUserDefaults standardUserDefaults]synchronize];

//读取偏好设置
NSString *name = [[NSUserDefaults standardUsersDefaults] objectForKey:@“name”];

3、自定义对象归档
遵守NSCoding协议
归档的时候encodeWithCoder方法重写
解档的时候initWithCoder方法重写
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_name forKey :@“name”];
[aCoder encodeObject:_age forKey:@“age”];
}

解档文件
-(id)initWithCoder:(NSCoder *)aDecoder
{
//如果父类没有遵守<NSCoding>协议,就不需要调用InitWithCoder
if(self = [super init])
{
_name = [aDecoder decodeObjectForKey:@“name”];
_age = [aDecoder decodeObjectForKey:@“age”];
}
return self;
}
//归档和解档的使用
p.name = @“xiom”;
p.age = 10;
//获取文件全路径
NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)[0];
//拼接文件名
NSString *filePath = [cachePath stringByAppendingPathComponent:@“person.data”];
//一定对象如果需要归档,必须要遵守<NSCoding>实现encodeWithCoder
//归档
[NSKeyedArchive archiveRootObject:p toFile:filePath];

//解档
Person *p = [NSKeyedUnarchiver unachiveObjectWithFile:filePath];



这篇关于沙盒路径下存储和读取数据 缓存文件、偏好设置文件、plist文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989815

相关文章

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

一文详解Nginx的强缓存和协商缓存

《一文详解Nginx的强缓存和协商缓存》这篇文章主要为大家详细介绍了Nginx中强缓存和协商缓存的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、强缓存(Strong Cache)1. 定义2. 响应头3. Nginx 配置示例4. 行为5. 适用场景二、协商缓存(协

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题