171,.plist文件中字典数据转成程序模型
来源:互联网 发布:mysql中right函数 编辑:程序博客网 时间:2024/05/27 00:30
AppData.h:
#import <UIKit/UIKit.h>
@interface AppData : NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *icon;
//readonly就只会生成setter和getter方法,而不生成成员变量_image,所以,只能使用合成指令,定义_image。
@property(nonatomic,strong,readonly)UIImage *image;
-(instancetype)initWithDic:(NSDictionary *)dic;
+(instancetype)appDataWithDic:(NSDictionary *)dic;
+(NSArray *)appList;
@end
AppData.m:
#import "AppData.h"
/*
使用KVC的注意事项
概念:全称(key value coding)键值编码,是一种简介修改/读取对象属性的一种方法
1,plist中的键值必须跟模型中的属性一致
2,模型中的属性个数可以等于或多个plist中的属性个数
*/
@implementation AppData
//合成指令,主动指定属性使用的成员变量名称
@synthesize image = _image;
-(UIImage *)image{
if (_image ==nil) {
_image = [UIImageimageNamed:self.icon];
}
return _image;
}
/**
* instancetype 主要用于在类方法实例化对象时,让编译器主动推断出对象的实际类型
*
*/
-(instancetype)initWithDic:(NSDictionary *)dic{
self = [superinit];
if (self) {
// 赋值第一种方法:
// self.name = dic[@"name"];
// self.icon = dic[@"icon"];
// 赋值第二种方法
// [self setValue:dic[@"name"] forKeyPath:@"name"];
// self setValue:dic[@"icon"] forKeyPath:@"icon"];
// 第三种方法的本质就是第二种方法的封装
[selfsetValuesForKeysWithDictionary:dic];
}
return self;
}
+(instancetype)appDataWithDic:(NSDictionary *)dic{
return [[selfalloc]initWithDic:dic];
}
+(NSArray *)appList{
NSString *path = [[NSBundlemainBundle]pathForResource:@"app"ofType:@".plist"];
NSArray *arr = [NSArrayarrayWithContentsOfFile:path];
NSMutableArray *dics = [[NSMutableArrayalloc]init];
for (int i=0; i<arr.count; i++) {
[dics addObject:[AppDataappDataWithDic:arr[i]]];
}
return dics;
}
@end
#import <UIKit/UIKit.h>
@class AppData;
@interface ViewController : UIViewController
@end
#import "ViewController.h"
#import "AppData.h"
@interface ViewController ()
@property(nonatomic,strong)NSArray *appList;
@end
@implementation ViewController
-(NSArray *)appList{
if (_appList ==nil) {
_appList = [AppDataappList];
}
return_appList;
}
-(void)viewDidLoad{
[superviewDidLoad];
for(int i =0;i <self.appList.count;i++){
AppData *data = self.appList[i];
NSLog(@"name = %@,icon = %@",data.name,data.icon);
}
for(int i =0;i <self.appList.count;i++){
AppData *data = self.appList[i];
UIImageView *image = [[UIImageViewalloc]initWithFrame:CGRectMake(0,0, 200, 200)];
image.image =data.image;
[self.viewaddSubview:image];
}
}
@end
- 171,.plist文件中字典数据转成程序模型
- 将字典中的数据保存到plist文件中
- 使用RMMapper将.plist文件转成model模型
- 164,将.plist文件中的数据加载到程序中
- iOS中二进制数据转成字典
- iOS UI篇 - plist文件字典转模型
- 从plist中获取数据赋给字典
- OC从plist文件中获取数据
- iphone开发之表格组件UITableView的使用(三)通过加载plist文件字典转模型方式展示分组数据
- iPhone开发之UITableView的小试牛刀 利用MVC模式从plist文件读取数据并字典转模型的格式实现
- 字典转模型&加载xib&加载plist
- iPhone开发之字典转模型——利用创建plist文件和懒加载
- Plist文件、HUD、字典转模型、纯代码封装View、XIB封装View
- plist 文件 存放数据
- plist文件取数据
- plist文件追加数据
- IOS中将字典转成模型对象
- 程序中更改资源加载方式plist文件
- jQuery中data方法内部运行原理
- Android端ORM框架——RapidORM
- 关于在Windows搭建OpenVPN的详细过程
- 为何ViewController释放后不走dealloc
- Jenkins入门系列之——01第一章 Jenkins是什么?
- 171,.plist文件中字典数据转成程序模型
- linux 添加用户、权限
- Android CountDownTimer 倒计时器
- 使用Jenkins搭建持续集成(CI)环境
- python 连接 mysql 错误
- OpenGL超级宝典7th简体中文-第四章-3D图形中的数学
- mysql排序
- 汽车之家 砍价软件
- 在tableView或者collectionView里如何获得被点击的cell的下标位置