IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS 应用沙盒以及应用数据的存储方式 -> 正文阅读

[移动开发]iOS 应用沙盒以及应用数据的存储方式

一、应用沙盒

  • 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管理应用程序的数据模型,可以极大程度减少需要编写的代码数量。
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:54:07  更:2022-04-18 17:56:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 21:40:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码