iOS篇—plist文件

本文介绍了在iOS开发中如何读取Plist文件,包括三种方法:直接读取、数据封装和使用开源工具。数据封装能有效管理大量数据,通过创建特定的数据模型,使访问和操作变得更加便捷。同时,还提及了数据模型的定义和解析数据的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何读取plist文件

在这里插入图片描述

方法一:

1.获取当前程序主路径下的某个文件的路径

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"plist"];

2.读取路径里面的内容,保存的数据是什么类型就用什么类型取
二进制NSData 数组 NSArray 字典NSDictionary

NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];

3.使用数据 把编码转化为文本

NSArray *statusArray = [dic objectForKey:@"status"];

4.获取status[]数组的第一个元素 数组元素都是字典 用字典对象接收

NSDictionary *firstDic = [statusArray objectAtIndex:0];

5.获取user对应的数据 user是一个字典

NSDictionary *userDic = [firstDic objectForKey:@"user"];

6.获取name address 均为字符串

NSString *name = [userDic objectForKey:@"name"];
NSString *address = [userDic objectForKey:@"address"];
方法二:数据封装
  • 为什么封装数据?

数据太多了,保存数据都需要不不同的变量量来保存,变量与变量之前没有任何的关联, 不好管理。

  • 数据封装:

把数据封装为某一个具体的模型,比如微博的模型WeiboModel,里面有name,text,address,source等属性。

  • 数据封装的好处:

a.不用定义多个变量来保存同种类型的数据;
b.将多个没有关联的数据封装为一个整体;
c.便于访问数据,用点语法直接访问即可,如:WeiboModel.name

  • 步骤:

1.获取数据(本地 / plist / 数据库 / 服务器)

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"plist"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
NSArray *statusArray = [dic objectForKey:@"status"];

2.定义一个数据模型,如微博模型:WeiboModel,这个数据模型有如下特点:
a.继承于NSObject
b.数据模型⾥面只有这个模型的基本数据,没有任何与UI相关的操作
c.注意在定义数据模型的时候, 尽量让模型的属性变量名和数据源⾥面的key相对应
在这里插入图片描述
在头文件中添加属性变量:

@property(nonatomic, copy) NSString *text;
@property(nonatomic, copy) NSString *name;
@property(nonatomic, copy) NSString *address;

3.解析数据
a.在获取数据的地方对数据进⾏封装

self.modelsArray = [NSMutableArray array];
for (NSDictionary *itemDic in statusArray) {     
        WeiBoModel *model = [[WeiBoModel alloc] init];        
        //获取user对应的字典
        NSDictionary *userDic = [itemDic objectForKey:@"user"];       
        //将数据赋给这个模型对象
        model.text = [itemDic objectForKey:@"text"];
        model.name = [userDic objectForKey:@"name"];
        model.address = [userDic objectForKey:@"address"];       
        //保存模型对象
        [_modelsArray addObject:model];
}

b.在数据模型里面对数据进行封装 写一个类方法

+ (WeiBoModel *)modelWithDataDic:(NSDictionary *)dic{
    //创建模型对象
    WeiBoModel *model = [[WeiBoModel alloc] init];
    NSDictionary *userDic = [dic objectForKey:@"user"];
    
    model.text = [dic objectForKey:@"text"];
    model.name = [userDic objectForKey:@"name"];
    model.address = [userDic objectForKey:@"address"];
    return model;
}

for (NSDictionary *itemDic in statusArray) {
        WeiBoModel *mo = [WeiBoModel modelWithDataDic:itemDic];
        [_modelsArray addObject:mo];
    }

4.操作数据 ,获取第二个模型的地址

WeiBoModel *model = [_modelsArray objectAtIndex:1];
NSLog(@"%@", model.address);
方法三:使用开源工具

在这里插入图片描述
两个方法

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"plist"];
NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:filePath];
NSArray *statusArray = [dic objectForKey:@"status"];
self.modelsArray = [WeiBoModel mj_objectArrayWithKeyValuesArray:statusArray];
WeiBoModel *model = [_modelsArray objectAtIndex:0];
NSLog(@"%@", model.text);
self.modelsArray = [WeiBoModel mj_objectWithFilename:@"shop.plist"];
NSLog(@"%@", _modelsArray);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值