iOS 应用沙盒以及应用数据的存储方式

Quartus II 13.0安装避坑指南:从下载到破解的完整流程(附常见错误解决方案) 本文提供Quartus II 13.0软件的详细安装与破解指南,涵盖从下载准备、路径设置、主程序安装到授权配置的全流程。重点解析了破解过程中生成和修改license.dat文件的核心步骤,并针对“无法找到有效的License文件”等常见错误提供了实用的解决方案,帮助用户快速构建稳定的FPGA开发环境。 阅读详情

一、应用沙盒

  • 1、概念:

  • 每个iOS应用都有自己的应用沙盒(应用沙盒就是应用的文件夹)。与其他应用系统隔离,应用必须待在自己的沙盒里,其他应用不能访问该沙盒。

  • 2、 如何去访问iOS应用的沙盒?

执行这个语句,可以打印应用沙盒的路径:NSString *str = NSHomeDirectory();
​ NSLog(@“沙盒路径:%@”,str);
可以发现每次打印的沙盒路径都是变化的,但是访问的还是同一个应用的沙盒路径。

  • 3、可以发现访问的应用沙盒的系统文件目录。假设应用的名称叫Layer。有Documents、Library、SystemData、temp
  • 4、 那么这四个文件夹的区别是什么呢?
  • 1> 应用程序包:(上图中的Layer),包含了所有的资源文件和可执行文件。
  • 2> Documents:保存应用运行时生成的需要持久化的数据,iTunes 同步设备时就备份该目录。例如:游戏应用可将游戏存档保存在该目录。
  • 3> tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes 同步设备时不会备份该目录。
  • 4> Library / Caches:保存应用运行时生成的需要持久化的数据,ITunes 同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据。
  • 5> Library / Preference:保存应用的所有偏好设置。iOS 的setting(设置)应用会在该目录中查找应用的设置信息。iTunes 同步设备时会备份该目录。

二、iOS应用数据存储的常用方式

  • XML属性列表(plist文件)
  • Preference(偏好设置)
  • NSKeyArchiver归档
  • SQLite3
  • Core Data

1、什么数据能够做 plist 存储?

  • 数组、字典和字符串有 writeToFile:这个方法,可以存储 plist文件中的数据。
  • 字符串虽然能够做 plist 存储,但是 plist 本身不支持字符串
    2、获取沙盒中的文件路径
//这里写了一个宏,表示文件中全局可用,访问到的是文件名为 contacts.data 这个文件。
#define kFilePath [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"contacts.data"]
// NSUserDomainMask 代表从用户文件夹下找
// YES 代表展开路径中的波浪字符~

注意: 路径必须展开(搜索路径的时候,第三个参数一定是 YES),如果为 NO 的话,系统会将应用的沙盒路径替换成波浪号~

2、偏好设置

  • 不需要关心文件名
  • 快速做键值对的存储
  • 底层使用的 NSUserDefaults 来实现数据的存储
// 使用 NSUserDefaults 来保存开关的状态
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.remindPwdSwich.isOn ? @"Y" : @"N" forKey:@"remindOn"];
[userDefaults setObject:self.autoLoginSwich.isOn ? @"Y" : @"N" forKey:@"autoLoginOn"];
[userDefaults setObject:self.userNameTF.text forKey:@"userName"];
[userDefaults setObject:self.passwordTF.text forKey:@"password"];          
[userDefaults synchronize];  //立即写入

3、归档、解档

  • 如果存储自定义对象,一定要用解、归档的操作。
  • plist、偏好设置都不好使。
  • 自定义对象解、归档的时候一定要遵守协议
  • 解析文件就会调用 initWithCoder:方法。
  • 在解档属性的时候,一定要为属性 赋值。
    在这里插入图片描述
    在这里插入图片描述
//归档联系人信息
 NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"contacts.data"];
   NSError *error = nil;
   NSData *data = [NSKeyedArchiver archivedDataWithRootObject:self.contacts requiringSecureCoding:YES error:&error];
    if (error) {
        NSLog(@"归档失败,失败的原因是:%@",error);
    } else {
      BOOL success = [data writeToFile:filePath atomically:YES];
        if (success) {
            NSLog(@"写入成功");
        } else {
            NSLog(@"写入失败");
        }
    }
//解档
 NSError *error = nil;
 NSData *data = [NSData dataWithContentsOfFile:filePath];
 self.contacts = [NSKeyedUnarchiver unarchivedObjectOfClass:[Contact class] fromData:data error:&error];
 if (!error) {
     NSLog(@"解档成功");
} else {
     NSLog(@"解档失败");
}

3、SQLite3

  • SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程。
    4、Core Data
  • Core Data是iOS5之后才出现的一个框架,提供了直接使用SQLite数据库的大部分灵活性,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象,通过CoreData管理应用程序的数据模型,可以极大程度减少需要编写的代码数量。
2026年医疗AI的可信革命全栈实现(上) 医疗AI可信化:贝叶斯网络与向量数据库的协同架构 本文探讨2026年医疗AI发展的关键转折点——从追求生成能力转向构建可信决策系统。核心观点认为,医疗AI下一阶段的竞争焦点在于不确定性量化和错误传播约束,而非单纯的问答流畅度。研究提出以Python为开发语言、结合向量数据库与贝叶斯网络的混合架构: 技术分层 语言层(LLM):处理自然语言交互与工具调用 证据层(Milvus/Qdrant):实现可审计的临床知识检索 概率层(pgmpy/PyMC):执行贝叶斯推理与风险路由 治理层:确保权限控制与人工复核机制 阅读详情

相关推荐

《炬丰科技-半导体工艺》用于半导体的RCA清洁技术

书籍:《炬丰科技-半导体工艺》 文章:用于半导体的RCA清洁技术 编号:JFKJ-21-1073 引言 RCA清洗技术是用于清洗硅晶圆等的技术,由于其高可靠性,30多年来一直被用于半导体和平板显示器(FPD)领域的清洗。其基础是以除去颗粒为目的的氨水-过氧化氢溶液组成的SC―1洗涤和以除去金属杂质为目的的盐酸-过氧化氢溶液组成的SC―2洗涤相结合的洗涤技术。SC-1洗涤的机理说明如下。首先,用过氧化氢氧化硅晶片的表面,用作为碱的氨蚀刻氧化硅,并通过剥离去除各种颗粒。此外,如图1所示,在pH 10.5附近的S

jfkj2021的博客 769

iOS应用沙盒:文件系统目录。

iOS不允许访问其他应用的应用沙盒(iOS8 已经开放访问) 沙盒里一般有几个文件目录: { 1、应用程序包:包含所有的资源文件和可执行文件 2、Documents:保存应用运行时生成的需要持久化的数据,iTunes会自动备份该目录。苹果建议将程序中建立的或在程序中浏览到的文件数据保存在该目录下,iTunes备份和恢复的时候会包括此目录。 3、tmp:保存应用运行时所需的临时...

weixin_33973609的博客 141

用Python搞定超效率SBM模型:从数据清洗到结果可视化全流程指南

本文详细介绍了如何使用Python实现超效率SBM模型,从数据清洗到结果可视化的全流程指南。超效率SBM模型作为传统DEA的进化版本,能有效处理非期望产出(如环境污染)并对高效单元进行精细排序。通过实战案例和代码示例,帮助读者掌握这一先进模型的Python实现技巧,提升效率评估的准确性和可视化效果。

silver的专栏 650

iOS沙盒目录简介、沙盒路径获取

一、沙盒的意义   出于安全的考虑,iOS系统的沙盒机制规定每个应用只能访问当前沙盒目录下面的文件。但是对于一些用户级别的数据,考虑到很多软件都需要使用其中的数据,用户可以通过对当前的软件授权,让当前的应用可以访问这类数据。但是这类数据只存在于苹果原生开发的应用中,比如相册、通讯录等等。   沙盒中的根目录下的一级目录是固定的,这些目录有Bundle Container(MyApp....

CCCCCC1990的博客 789

ROS入门必学导航算法——Navigation

该平台集成了多款无人车底盘,包括履带式、四轮差速、阿克曼、麦克纳姆轮底盘等,以满足不同形式和配置的需求,并搭载了RTK定位系统、双目相机、深度相机和激光雷达等多种传感器,以满足开发者的科研需求。amcl节点接收里程计数据(通过"odom"话题)和激光雷达数据(通常通过"scan"话题),结合已知的地图,实时地估计出机器人在该地图上的位置。在ROS中,这是通过"tf库"变换实现的,通过将传感器数据转换到共同的参考系中,系统可以更容易地集成来自不同传感器的数据,并确保它们在相同的空间和时间范围内可用。

AMOVLAB(阿木实验室) 2908

四大AI编程工具深度对比:Claude Code、Codex、OpenCode与WorkBuddy选型指南

AI编程助手正从代码补全走向自主执行的智能体形态,其核心原理是通过“规划-执行-观察”循环让模型自主完成文件修改、命令运行与错误修复。这类工具的技术价值在于提升长任务连续性与上下文理解能力,同时通过自定义指令与技能机制沉淀团队规范,适应不同工程场景。在实际选型中,开发者常面临终端CLI与图形化工作台、模型开放程度与绑定生态之间的权衡:Claude Code强调深度Agent体验,Codex支持灵活接入OpenAI兼容模型,OpenCode以开源多模型见长,WorkBuddy则提供全流程集成环境。本文基于真实

weixin_42526166的博客 136

iOS 沙盒路径详解(存储路径的选择)

在日常开发中必然会遇到把数据存入沙盒路径中,不管是用户偏好设置还是数据库、coreData都必须选择好对应的位置,下面给大家介绍下沙盒路径下各个文件的作用,以及实际开发中如何选择路径。 沙盒机制是iOS 非常重要的存储数据的地方,由于本身相对于外部来说是不固定位置了,普通用户无法自己找的该路径地址,所以放在这里的数据相对来说是非常安全。沙盒路径下一共有三个文件夹, Documents, 这

topws1的博客 2085

2025年下半年网络工程师案例分析真题及答案解析

2025年下半年网络工程师案例分析真题及答案解析

鹿鸣天涯 1089

iOS sandbox

iOS的沙盒机制,应用只能访问自己应用目录下的文件。iOS不像android,没有SD卡概念,不能直接访问图像、视频等内容。iOS应用产生的内容,如图像、文件、缓存内容等都必须存储在自己的沙盒内。默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp。Library包含Caches、Preferences目录。 上面的完整路径为:用户-...

weixin_34336292的博客 287

C++多线程 task--std::promise和std::future

本文主要讲解C++11/14/17中所提供的应用于多线程编程中的Task机制。Task可由如下几部分取得而本文主要讲解std::promise和std::future相关的内容。std::promise和std::future通过一个数据管道进行交流,可以将std::promise看作生产者,std::future看作消费者,其两者形成如下的方式交互std::promise本身是一个模版类,通过std::promise可以像数据管道中设置value,异常和相应的通知信息。std::promise提供了如下接

qls315的博客 1818

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1484

Android沙箱目录

一.getCacheDir、getCacheDir getCacheDir()方法用于获取/data/data//cache目录 getFilesDir()方法用于获取/data/data//files目录 二.getExternalFilesDir、getExternalCacheDir 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。这样当该应用被卸载后,这些数据还保留在SDCard中

aaqian1的博客 7420

数据治理路径之辩:从“先治后用”到“边用边治”,企业如何选择最优路径?

数据治理是企业在数智化建设中的核心挑战,主要涉及三种时序策略:先治理后使用、先用后治理和边用边治。先治理后使用强调在数据应用前建立完整的治理框架,适合高合规要求的行业,但可能响应滞后。先用后治理则优先释放数据价值,适合快速变化的业务环境,但可能累积数据质量问题。边用边治寻求动态平衡,通过持续改进实现治理与应用的同步迭代,适合复杂数据环境。技术选型决策矩阵和实施方法论提供了具体的操作指南,建议根据组织特性和业务需求选择适配方案,并通过渐进式演进路径实现治理与业务的共生演进。

石榴姐yyds 405

ios 模拟器沙盒_ios开发中的沙盒机制

iOS应用储存分以下几种:一、沙盒基本机制二、plist储存三、偏好设置四、NSKeydeArchiver归档一、沙盒基本机制(sandbox)iOS系统相对于Android系统,或者相对于Windows系统来说比较安全的原因很多,其中有一点就是苹果推出的沙盒机制,每个应用都有自己对应的沙盒,每个应用程序之间不能相互访问非本程序的沙盒,所以,Apple相对于其他的系统来说比较安全,再是从内存上来说...

weixin_32827751的博客 557

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

iOS开发总结之沙盒存储

1.属性列表plist存储 plist只能存储 是写入到Documents目录下 且只能存储系统自带的一些常规的类, 也就是有writeToFile方法的对象才可以使用plist保存数据 字符串/字典/数据/NSNumber/NSData ... 自定义的对象不能保存到plist中 /** * 点击保存按钮 */ - (IBAction)sa

Walden_tinghou的专栏 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

ios 的数据持久化技术(一)

在iOS中有一整套的数据安全体系,而对于iOS自身的APP来讲只能访问专属于自己的目录,这个目录就是我们通常在iOS开发中所讲的沙箱(沙盒)目录,就此目录而言应用程序间是禁止数据的共享和访问的。 一、沙箱(沙盒)的结构《1》、应用程序包(上图中的动态单元格高度.app);包含了所有的资源文件和可执行文件 《2》、 Documents:保存应用运行时需要持久化的数据,iTunes 同步设备时会备份

1848倒计时 515

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS应用数据存储的几种常用方式

应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 3)应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documen

zzx240394381的博客 538

iOS常用的存储方式介绍

 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。本文针对OC中经常使用的一下存储方式做了个整理。     常用的存储工具/方式:       NSUserDefaults类     Plist文件      解归档     手动存放沙盒 // sqlite     CoreData      第三方数据存储框架 1. NSU...

weixin_33788244的博客 102

【IOS学习】iOS本地数据存取,看这里就够了

应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 3)应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documen

THEWAILKINGDEAD 631

iOS本地数据存取

应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离。应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 3)应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documen

烽火连城的博客 390

iOS开发 - OC - 实现本地数据存储的几种方式一

iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置、需要在本地缓存的数据等等。本文针对OC中经常使用的一下存储方式做了个整理。 常用的存储工具/方式: NSUserDefaults类 Plist文件 解归档 手动存放沙盒 // sql...

a26579424的博客 660

【iOS】iOS持久化

iOS中的沙盒机制是一种安全体系。为了保证系统安全,iOS每个应用程序在安装时,会创建属于自己的沙盒文件(存储空间)。应用程序只能访问自身的沙盒文件,不能访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。

weixin_61639290的博客 1690

iOS数据本地持久化

p1:归档、Preference(NSUserDefault)、沙盒存储 iOS开发中本地存储主要有三种形式 XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) 应用沙盒 什么是应用沙盒 要想在本地存储数据,那就要知道一下什么是应用沙盒,其实很好理解应用沙盒就是应用的文件夹,与...

weixin_34228617的博客 148

iOS数据存储方法介绍

项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述。 沙盒PlistPreference偏好设置NSKeyedArchiver归档 / NSKeyedUnarchiver解档SQLite3的使用FMDBCore Data 下图是Core Data堆栈的图示,在这里是

程序小痴的博客 421

iOS开发之沙盒机制

iOS应用储存分以下几种: 一、沙盒基本机制 二、plist储存 三、偏好设置 四、NSKeydeArchiver归档 一、沙盒基本机制(sandbox) iOS系统相对于Android系统,或者相对于Windows系统来说比较安全的原因很多,其中有一点就是苹果推出的沙盒机制,每个应用都有自己对应的沙盒,每个应用程序之间不能相互访问非本程序的沙盒,所以,Apple相对于其...

weixin_33991418的博客 274

数据持久化

一、文件 二、UserDefault 三、SQLite 四、keychain 五、coredata 六、归档化UserDefault 1. 应用域(domain) 一般NSUserDefault内使用setValue:forKeyPath方法时,存储的数据存入了应用域 2. 注册域 仅有较低的优先权,应用域没找到在此找 3. 全局域 系统设置预言域包括地区,日期参数域

韩钊钊钊钊的专栏 192
上一篇: iOS 导航控制器栈和视图控制器的生命周期
下一篇: iOS 绘制图片水印,并将图片保存到相册中
same_life
博客等级 码龄7年 25粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值