【通讯录案例-数据存储总结 Objective-C语言】

一、我们简单的把“数据存储”总结一下,

通知

1.上午,我们说的三种存储方式,

1)plist

2)Preference(偏好设置)

3)NSKeyedArchiver(归档、解档)

三种存储方式,

2.什么能做plist存储,

1)writeToFile:方法,

实际上,这个东西,才是关键,

有一个对象,可以去写writeToFile:方法,

那么,可以考虑,去做plist存储,

2)还有一个比较特殊的东西,我们说,字典,和,数组,都可以去写writeToFile:方法,

还有一个是字符串,实际上,字符串,也有writeToFile:方法,

它实际上,也可以去做plist存储,

但是,plist本身,并不支持字符串,

通知

也就是说,我们那个plist,新建了一个文件,根节点,那一块儿,我们选了一下,只有Array、和、Dictionary、这两个、

然后,字符串,实际上,是没有的,

但是,字符串,也可以去做plist存储,

2.好,我们可以试一下啊,

新建一个项目啊,

通知

Name:“08-字符串做plist“,

通知

点“Next”,

通知

好,新建一个项目啊,

通知

好,然后呢,在这个里边儿啊,

通知

我直接在viewDidLoad:里边儿来写吧,

2)首先呢,写一个字符串啊,NSString

通知

NSString *str = @“value”;

通知

然后呢,这个str,实际上,也有一个叫做writeToFile:的方法,

通知

然后呢,用这个“过期的”,也行,“新的”,也行,

通知

新的,需要编码,我直接用这个“过期的”,

通知

[str writeToFile:(NSString *) atomically:(BOOL)];

通知

[str writeToFile:(NSString *) atomically:(BOOL)];

输入两个参数:

1)writeToFile:(NSString *),这个里边儿啊,要传一个file,

这个file里边儿,来一个

NSString *tmpPath =

通知

NSString *tmpPath = NSTemporaryDirectory();

通知

tmpPath,就等于NSTemporaryDirectory(),系统给我们封装好的,我们只需要一句话,就能取到tmpPath,

tmp的啊,不是document的,NSTemporaryDirectory,这是系统给我们封装好的,直接一句话啊,就能够拿的到,

通知

然后,再来一个file的path,啊,

NSString *filePath = [tmpPath stringByAppendingPathComponent:(NSString *)];

通知

来一个file的name,

通知

好,这个方法,再来写一个plist,“xx.plist”,

通知

好,然后呢,把这个filePath,传进来,

通知

2)atomically:(BOOL),这个atomically,直接YES,

通知

然后,command + R,

通知

这个应该就跑起来了啊,

跑起来以后,应该是有值的啊,我们看一下沙盒,

通知

打开这个tmpPath,

通知

实际上,也会有这么一个“xx.plist”,

然后呢,你打开它啊,

通知

它这儿,也会有这么一个value,但是,它的“根节点”的类型,实际上,是什么都没有的,

它是,“存”,是没有问题的,

然后,你取出来,实际上,也没有问题,

通知

我在这个里边儿,选中这个方法,删掉,

然后,写一个减号,-

通知

- tou

通知

- touchesBegan:withEvent:

通知

- (void)touchesBegan:(NSSet< UITouch * > *)touches withEvent:(UIEvent *)event{

}

我在这个里边,写一个touchBegan啊,点击屏幕的时候,让它取一下

路径,还是它,

通知

选中这一堆,command + C、

到这个touchBegan:方法里边儿,command + V、

通知

写一个注释,// 获取文件路径

然后,再command + V、

通知

好,然后呢,路径有了以后,我们再,

通知

我们再去取一个字符串啊,实际上,你这个plist,你字典怎么着解析的,你字符串,也是一样的啊,

通过NSString 的一个方法,

[NSString

通知

[NSString stringWithContentsOfFile:(NSString *)];

通知

[NSString stringWithContentsOfFile:(NSString *)];

通知

然后,把这个filePath,传进来,

通知

然后,我拿NSString类型的变量去接一下,

NSString *str = [NSString stringWithContentsOfFile:filePath];

通知

然后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ETL数据集成工具DataX、Kettle、ETLCloud特点对比

ETL数据集成工具 对于数据仓库&#xff0c;大数据集成类应用&#xff0c;通常会采用ETL工具辅助完成。ETL&#xff0c;是英文 Extract-Transform-Load 的缩写&#xff0c;用来描述将数据从来源端经过抽取(extract) 、交互转换(transform) 、加载(load)至的端的过程当前的很多应…

spring @Transactional注解参数详解

事物注解方式: Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 Transactional public class TestServiceBean implements TestService {}当类中某些方法不需要事物时: Transactional public class TestServiceBean implements TestService {private…

Vue24 收集表单数据 实例

实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>收集表单数据</title><script type"text/javascript" src"../js/vue.js"></script></head><body><!-- 收集…

SpringCloud-Feign:负载均衡(基于服务端)

7.Feign&#xff1a;负载均衡(基于服务端) 7.1 Feign简介 Feign是一个开源的声明式HTTP客户端&#xff0c;它可以简化HTTP API的调用过程。Feign的设计目标是使得使用者可以像调用本地方法一样调用远程服务&#xff0c;使得编写和维护HTTP客户端变得更加简单。类似controller…

2045第六题 拯救花园 (flowers)

题目大意&#xff1a; 有n只兔子&#xff0c;每只兔子抓回去的时间为ti,回来的时间也是ti,则抓一只兔子要2*ti的时间&#xff0c;di则为每只兔子一个时间单位能吃多少草&#xff0c;用最优方法做的话它们一共吃了多少草&#xff08;最少&#xff09; 贪心标准&#xff1a; 我们…

[深度学习] 卷积神经网络“卷“在哪里?

​ &#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[深度学习] ❤️ 热门学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 目录 1.卷积的定义 2.卷积的"卷"在哪里 3.什么又是卷积神…

C++学习Day06之多继承基本语法

目录 一、程序及输出二、分析与总结 一、程序及输出 多继承的基本语法如下&#xff1a; class Base1 { // Base1 class definition }; class Base2 { // Base2 class definition }; class Derived : public Base1, protected Base2 { // Derived class definition }; #include…

OpenAI划时代大模型——文本生成视频模型Sora作品欣赏(一)

Sora介绍 Sora是一个能以文本描述生成视频的人工智能模型&#xff0c;由美国人工智能研究机构OpenAI开发。 Sora这一名称源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其无限的创造潜力。其背后的技术是在OpenAI的文本到图像生成模…

MySQL-锁(LOCK)

文章目录 1. 锁是什么&#xff1f;2. 全局锁2.1 相关语法2.2 特点 3. 表级锁3.1 表锁3.1.1 共享读锁&#xff08;S&#xff09;3.1.2 排它写锁&#xff08;X&#xff09; 3.2 元数据锁&#xff08;MDL&#xff09;3.2 意向锁&#xff08;IS、IX&#xff09; 4. 行级锁4.1 行锁 …

Python学习(16)|列表_遍历_排序_max_min_sum

列表的遍历&#xff1a; a [10,20,30,40] for obj in a: #obj 是临时变量名称&#xff0c;随意起名print(obj) 执行结果&#xff1a; 复制列表所有的元素到新列表对象&#xff1a; list1 [30,40,50] list2 list1 #只是将list2也指向了列表对象。也就是说list…

Springboot返回给前端的日期变成时间戳问题处理

问题&#xff1a; 解决方案 在对应的Entity类中&#xff0c;给对应属性添加JsonFormat​注解 ​JsonFormat​注解用于将Date日期格式化为指定格式的字符串。由于在序列化时间时是按照国际标准时间GMT进行格式化的&#xff0c;最后接受到的数据会早8个小时&#xff0c;所以应该…

CF778A String Game 题解

文章目录 CF778A String Game 题解题面翻译Input DataOutput DataInput Sample 1Output Sample 1题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示算法&#xff1a;二分代码&#xff1a; CF778A String Game 题解 link 题面翻译 …

【白嫖8k买的机构vip教程】安卓设备连接电脑进行adb命令操作

Android 真机进行adb 命令的操作&#xff1a; 连接方式 &#xff1a; 数据线连接&#xff1a; 1&#xff09;手机需通过数据线连接电脑&#xff1b; 2&#xff09;手机调出开发者选项&#xff1b;手机操作步骤&#xff1a;设置——系统——关于手机&#xff08;平板电脑&am…

CDN缓存有什么作用?

CDN缓存是内容分发网络的核心技术之一&#xff0c;它的作用在于通过将内容缓存在边缘服务器上&#xff0c;提高内容的访问速度和可用性。以下是CDN缓存的几个主要作用&#xff1a; 加速内容的访问速度 CDN缓存通过将内容缓存在距离用户更近的边缘服务器上&#xff0c;减少了内…

【办公类-16-07-02】“2023下学期 周计划-户外游戏 每班1周五天相同场地,6周一次循环”(python 排班表系列)

背景需求&#xff1a; 又到了开学季&#xff0c;新的自主游戏&#xff08;户外游戏&#xff09;安排表出炉了。 这张是贴在美术活动室的安排表&#xff0c;我需要转换成班级为单位的安排表&#xff0c;便于批量制作周计划。 设计思路&#xff1a; 1、一个班级每周轮到的一个场…

电商+支付双系统项目------怎么用代码实现支付系统?

前言 上篇文章讲了我们应该怎么设计支付系统&#xff0c;构建了一个支付系统的蓝图&#xff0c;这篇文章我来讲一下怎么用代码来设计支付系统。当然&#xff0c;我肯定不是手把手的教你哈哈哈&#xff0c;我只是把支付系统的核心的部分展示给大家看&#xff0c;让大家了解一下…

C 语言 devc++ 使用 winsock 实现 windows UDP 利用 IP 进行局域网发送消息

UDP 通信流程_udp通信过程-CSDN博客参考来源 UDP 通信流程_udp通信过程-CSDN博客 这里移植到windows 上 &#xff0c;使用 devc 开发。 服务端代码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <…

【python】深入探索使用Matplotlib中的plt.legend()添加图例

当我们绘制复杂的图表&#xff0c;尤其是包含多个数据系列的图表时&#xff0c;一个清晰、易读的图例是至关重要的。plt.legend()函数是Matplotlib库中用于添加和定制图例的关键工具。在本篇博文中&#xff0c;我们将深入探讨plt.legend()的功能、用法以及如何通过它提升图表的…

ChatGLM3:打造更智能、更安全的代码解释器和工具使用体验

ChatGLM3 是由智谱AI训练的第三代大型语言模型&#xff0c;它不仅能理解和生成人类语言&#xff0c;还能执行代码、调用工具&#xff0c;并以 markdown 格式进行响应。为了提高用户体验&#xff0c;同时避免用户输入的注入攻击&#xff0c;ChatGLM3 采用了全新的对话格式。下载…

Qt的基本操作

文章目录 1. Qt Hello World 程序1.1 通过图形化界面的方式1.2 通过代码的方式实现 2. Qt 的编码问题3. 使用输入框实现hello world4. 使用按钮实现hello world5. Qt 编程注意事项6. 查询文档的方式7. 认识Qt坐标系 1. Qt Hello World 程序 1.1 通过图形化界面的方式 我们先讲…