你的位置:首页 > 操作系统

[操作系统]IOS中将字典转成模型对象


作为IOS开发初级者今天学习了 如何将plist数据字典转成 数据对象数组中 。有点像C#中解析

apps.plist的

 

<??><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><array>  <dict>    <key>name</key>    <string>天天酷跑</string>    <key>icon</key>    <string>icon_00</string>  </dict>     <dict>    <key>name</key>    <string>保卫萝卜2</string>    <key>icon</key>    <string>icon_10</string>  </dict>  <dict>    <key>name</key>    <string>神偷奶爸</string>    <key>icon</key>    <string>icon_11</string>  </dict></array></plist>



从处理plist中的数据 并返回模型对象的数组
/** * 从处理plist中的数据 并返回模型对象的数组 * * @return NSArray *apps; */-(NSArray *) apps{  if (_apps==nil) {    // 过去plist的全路径    NSString *path=[[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];    //加载数组    NSArray *dicArray=[NSArray arrayWithContentsOfFile:path];    //将dicArray里面的所有字典转成模型对象,放到新的数组中。    NSMutableArray *appArray=[NSMutableArray array];    for (NSDictionary *dict in dicArray) {      //创建模型对象                        /*      MyApp *app=[[MyApp alloc] initWithDict:dict];             [NSString stringWithFormat:<#(NSString *), ...#>];      [[NSString alloc] initWithFormat:<#(NSString *), ...#>];            [NSArray arrayWithContentsOfFile:<#(NSString *)#>]      [[NSArray alloc] initWithContentsOfFile:<#(NSString *)#>;       通过这里 我们需要提取一个appWith        一个命名规范的问题       */            MyApp *app=[MyApp appWithDict:dict];      //添加到对象到数组中      [appArray addObject:app];    }    //赋值    _apps=dicArray;      }  return _apps;}

 

 

自定义的MyApp类,和字典中做到一一对应 

#import <Foundation/Foundation.h>/** * copy :NSString  strong :一般对象  weak:UI控件  assign :基本数据类型 */@interface MyApp : NSObject/** * 图标 */@property (nonatomic,copy) NSString *icon;/** * 名称 */@property(nonatomic,copy) NSString *name;/** * 通过字典来初始化模型对象 * * @param dic 字典对象 * * @return 已经初始化完毕的模型对象 *//*instancetype的作用,就是使那些非关联返回类型的方法返回所在类的类型!好处能够确定对象的类型,能够帮助编译器更好的为我们定位代码书写问题
instanchetype和id的对比1、相同点都可以作为方法的返回类型2、不同点①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象;②instancetype只能作为返回值,不能像id那样作为参数,比如下面的写法:*/-(instancetype)initWithDict:(NSDictionary *)dict;+(instancetype) appWithDict:(NSDictionary *)dict;@end

 

 

@implementation MyApp-(instancetype)initWithDict:(NSDictionary *)dict{  if (self=[super init]) {    self.name=dict[@"name"];    self.icon=dict[@"icon"];  }  return self;}+(instancetype) appWithDict:(NSDictionary *)dict{    // 为何使用self,谁调用self方法 self就会指向谁!!  return [[self alloc] initWithDict:dict];  }@end

 




西藏自驾游攻略西藏旅游线路大全什么时候去西藏旅游最好西藏跟团旅游报价多少西藏旅游必去的地方是香格里拉在哪里_香格里拉在什么地方 三江自然湿地保护区在哪_地理位置 白水洋在哪里_白水洋在哪_白水洋在什么地方 沈阳故宫地址_沈阳故宫在哪_沈阳故宫怎么走 稻城亚丁购物指南(图) 英国墓地分上下铺 水麻将你会打吗? 世界上最大的石刻弥勒佛坐像 龙池曼漂流团购价格?嵩县龙池曼漂流门票团购优惠吗? 乐清到雁荡五虎山漂流有直达车吗?乐清到五虎山漂流怎么坐车? 富华水上皇宫需要带什么?潍坊富华游乐园水上皇宫要穿泳衣吗? 诸暨西源峡谷漂流开漂了吗?诸暨五泄漂流开漂时间? 海南欢乐节举办几天?海南欢乐节几号到几号? 畅游武安古武当山 兔屎茶“解酒?各国闻所未闻的奇葩解酒法(全文) 40415 海南欢乐节去玩吗?第15届海南欢乐节优惠景点有哪些? 40416 海南欢乐节有什么好玩的?第十五届海南欢乐节节目介绍? 40417 “新世界7大奇观城市”出炉 黎巴嫩首都居首(全文) 40418 看奇幻魔界 听野人传说 40419 2015南京冰雪奇缘圣诞主题展举办时间、地点、门票以及活动详情怎么样? 40420 禁止使用硬币购物?世界八国最奇葩规定(全文) 40421 海南欢乐节有什么活动?2015海南欢乐节活动介绍? 4042 “融和粤菜”取之于自然,食之于丽轩[三] IPI60R380C6 Datasheet IPI60R380C6 Datasheet IPB60R380C6 Datasheet IPB60R380C6 Datasheet FCP11N60N Datasheet FCP11N60N Datasheet 罗浮山在哪里 罗浮山在哪里 罗浮山在哪里 情人节什么时候 情人节什么时候 情人节什么时候 深圳东部华侨城图片 深圳东部华侨城图片 深圳东部华侨城图片