iOS学习之 plist文件的读写

简介: <p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px"> <span style="font-size:16px">  在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:<span style="line-height:1.5; font-fam

  在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。

Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息


我们创建一个项目来学习plist文件的读写。


1、创建项目Plistdemo


项目创建之后可以找到项目对应的plist文件,打开如下图所示:


在编辑器中显示类似与表格的形式,可以在plist上右键,用源码方式打开,就能看到plist文件的xml格式了。



2、创建plist文件。


按command +N快捷键创建,或者File —> New —> New File,选择Mac OS X下的Property List



创建plist文件名为plistdemo。



打开plistdemo文件,在空白出右键,右键选择Add row 添加数据,添加成功一条数据后,在这条数据上右键看到 value Type选择Dictionary。点加号添加这个Dictionary下的数据


添加完key之后在后面添加Value的值,添加手机号和年龄


创建完成之后用source code查看到plist文件是这样的:

[cpp]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
  3. <plist version="1.0">  
  4. <dict>  
  5.     <key>jack</key>  
  6.     <dict>  
  7.         <key>phone_num</key>  
  8.         <string>13801111111</string>  
  9.         <key>age</key>  
  10.         <string>22</string>  
  11.     </dict>  
  12.     <key>tom</key>  
  13.     <dict>  
  14.         <key>phone_num</key>  
  15.         <string>13901111111</string>  
  16.         <key>age</key>  
  17.         <string>36</string>  
  18.     </dict>  
  19. </dict>  
  20. </plist>  

3、读取plist文件的数据


现在文件创建成功了,如何读取呢,实现代码如下:
[cpp]  view plain copy
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     //读取plist  
  5.   
  6.     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];  
  7.     NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];  
  8.     NSLog(@"%@", data);//直接打印数据。  
  9. }  

打印出来的结果:

[cpp]  view plain copy
  1. PlistDemo[6822:f803] {  
  2.     jack =     {  
  3.         age = 22;  
  4.         "phone_num" = 13801111111;  
  5.     };  
  6.     tom =     {  
  7.         age = 36;  
  8.         "phone_num" = 13901111111;  
  9.     };  
  10. }  

这样就把数据读取出来了。


4、创建和写入plist文件

在开发过程中,有时候需要把程序的一些配置保存下来,或者游戏数据等等。 这时候需要写入Plist数据。

写入的plist文件会生成在对应程序的沙盒目录里。

接着上面读取plist数据的代码,加入了写入数据的代码,

[cpp]  view plain copy
  1. <strong>- (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     //读取plist  
  5.   
  6.     NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];  
  7.     NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];  
  8.     NSLog(@"%@", data);  
  9.       
  10.     //添加一项内容  
  11.     [data setObject:@"add some content" forKey:@"c_key"];  
  12.       
  13.     //获取应用程序沙盒的Documents目录  
  14.     NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);  
  15.     NSString *plistPath1 = [paths objectAtIndex:0];  
  16.       
  17.     //得到完整的文件名  
  18.     NSString *filename=[plistPath1 stringByAppendingPathComponent:@"test.plist"];  
  19.    //输入写入  
  20.     [data writeToFile:filename atomically:YES];  
  21.       
  22.     //那怎么证明我的数据写入了呢?读出来看看  
  23.     NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];  
  24.     NSLog(@"%@", data1);  
  25.       
  26.       
  27.     // Do any additional setup after loading the view, typically from a nib.  
  28. }  
  29. </strong>  

在获取到自己手工创建的plistdemo.plist数据后,在这些数据后面加了一项内容,证明输入写入了。

怎么证明添加的内容写入了呢?下面是打印结果:



目录
相关文章
vant中Dialog的使用,如何修改Message字号大小
vant中Dialog的使用,如何修改Message字号大小
vant中Dialog的使用,如何修改Message字号大小
|
2月前
|
缓存 前端开发 NoSQL
如何开发工程项目部管理系统中的进度管理板块(附架构图+流程图+代码参考)
本文介绍如何构建一个高效的工程项目进度管理板块,涵盖系统架构、数据模型、核心功能、业务流程及开发技巧。内容包含四个关键代码示例,便于快速落地开发,帮助解决进度不准与沟通不畅两大工程难题。
|
8月前
|
人工智能 Java 测试技术
通义灵码2.0·AI程序员加持下的智能编码实践与测评
通义灵码2.0是阿里云推出的新一代智能编程助手,集成DeepSeek模型并新增多项功能,显著提升开发效率。本文通过实际项目体验新功能开发、跨语言编程、单元测试自动生成和图生代码等功能,展示其在代码生成、质量内建和人机协作方面的优势。相比1.0版本,2.0在模型选择、代码质量和用户体验上均有显著提升。尽管存在依赖网络和多语言混合项目中的不足,但整体表现优异,极大优化了开发流程。[了解更多](https://lingma.aliyun.com/)
949 59
|
6月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
191 4
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
8月前
|
存储 前端开发 API
HarmonyOSNext 端云一体化(5)
本文介绍了 HarmonyOS Next 中客户端操作云存储的详细方法,涵盖云存储基础、环境准备及核心 API 使用。首先讲解了云存储的概念、免费配额与计费策略,接着说明如何在 AGC 平台开通云存储并初始化实例。核心功能包括文件上传(`uploadFile`)、云端文件列表查看(`list`)、元数据获取(`getMetadata`)、下载地址获取(`getDownloadURL`)、文件下载(`downloadFile`)和文件删除(`deleteFile`)。文中还强调了操作时需注意的事项,如文件路径限制和错误处理。通过学习,开发者可掌握云存储的基本操作,满足应用开发中的文件存储需求。
278 9
HarmonyOSNext 端云一体化(5)
|
8月前
|
人工智能 自然语言处理 搜索推荐
告别加班!用DeepSeek搭建全自动爆款图文工厂
随着人工智能技术的飞速发展,图文创作迎来了革命性飞跃。DeepSeek作为强大的AI工具,可批量生成高质量图文笔记,精准适配小红书、抖音、B站等平台。通过明确选题、撰写提示词,用户能轻松定制内容风格,涵盖字体、背景、颜色等多方面细节。从注册登录到生成HTML代码,再到优化处理图片,DeepSeek为创作者提供了全流程支持,助力打造爆款内容。无论是分析爆款笔记还是二次创作,DeepSeek都能大幅提升效率,引领潮流风向标。
435 25
|
12月前
|
供应链 区块链 数据安全/隐私保护
智能合约技术在供应链管理中的应用与挑战####
智能合约,作为区块链技术的重要组成部分,正逐步渗透至供应链管理领域,以其自动化执行协议、增强透明度与效率的特性,重塑着传统供应链的运作模式。本文旨在探讨智能合约如何在供应链中发挥作用,解决现有问题,并分析面临的挑战及可能的解决方案。通过具体案例分析,揭示其在提高供应链透明度、降低成本、加速交易速度等方面的潜力。 ####
|
存储 数据库连接 数据库
如何使用Python上传文件到FTP服务器
如何使用Python上传文件到FTP服务器
361 1

热门文章

最新文章