码迷,mamicode.com
首页 > 移动开发 > 详细

2、iOS 开发之字典转模型和 xib

时间:2015-08-29 06:21:31      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:字典转模型   plist   xib   

一、字典转模型(plist文件)

模型的封装方法:(放到代码仓库中)

1.在.h文件中添加与plist文件key值对应的属性名

Array --- > NSArray
Dictionary --- > NSDictionary
string ---> NSString
number ---> NSNumber

注意:属性名和plist中key值一定要一致

2..h文件文件中属性的strong weak copy assign的使用

1> strong : 用于一般的对象或自定义的对象类型
2> weak : 用于UI控件和delegate
3> copy : 用于NSString block对象
4> assign : 用于基本数据类型

3.在.h中添加可以传入字典参数的构造方法

- (instancetype)initWithDict:(NSDictionary*)dict;
+ (instancetype)xxxWithDict:(NSDictionary*)dict;

4.在.m文件中实现对应的构造方法

// 在initWithDict:方法中用KVC一句代码搞定所有属性

5.instancetype和id的区别

1> 相同点:都可以作为方法的返回值类型
2> 不同点:instancetype编译器会检测出真是类型,id可以用在参数类型上

二、KVC

KVC -键值编码,是一种间接修改/读取对象属性的一种方法
1.使用注意事项:

1> plist中的键值名称必须与模型中的属性一致
2> 模型中的属性可以不完全出现在plist中,但是如果plist文件中的属性不完全出现在属性中就会出错。

三、xib的使用

xib文件用来描述一块局部的UI界面
在开发阶段面向开发者是xib文件,装到手机xib文件就会转化为nib文件

1.xib文件的加载方法
1> 方法1:创建所有的xib对象,并且将对象按顺序放到objs数组中

NSArray * objs = [[NSBundle mainBundle] loadNibNamed:@"appView" owner:nil options:nil];

2> 方法2

UINib *nib = [UINib nibWithNibName:@"appView" bundle:[NSBundle mainBundle]];
NSArray* objs = [nib instantiateWithOwner:nil options:nil];

2.xib封装成view的过程

1> 新建一个集成字UIView的自定义view,假设类名叫做(WBAppView2> 新建一个WBAppView.xib文件来描述WBAppView内部结构
3> 修改xib的类型为WBAppView的真实类型
4> 将内部子控件跟WBAppView进行属性连线
5> WBAppView提供一个模型属性
6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据
7> 把模型数据拆开,分别设置数据到对应的子控件中
8> 补充:提供一个创建WBAppView的类方法,将读取的xib文件代码屏蔽起来

四、懒加载

  • 懒加载:用到时才加载,在get方法中实现的,OC中的get方法是去掉下划线的属性名首字母小写
    用到时:用到了真实数据or用到了get方法(文档)
- (NSArray *)apps
{
    if (_apps == nil) {

    // 1.获得plist的全路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];

    // 2.加载数组
    NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];

    // 3.将dictArray里面的所有字典转成模型对象,放到新的数组中
    NSMutableArray *appArray = [NSMutableArray array];
    for (NSDictionary *dict in dictArray) {
    // 3.1.创建模型对象
    MJApp *app = [MJApp appWithDict:dict];

    // 3.2.添加模型对象到数组中
    [appArray addObject:app];

    }

    // 4.赋值
    _apps = appArray;
    }
    return _apps;
}

补充:不能与控件进行交互

1> alpha <= 0.01
2> hidden = YES
3> userInteraction = NO(父控件的userInteraction = NO4> 位置超过了所在父控件的尺寸
// 父视图不能交互,子视图也不能交互方法的命名规范:

命名法则:

1> 单词首字母小写,后面的单词的首字母大写
2> initWithxxx: init 初始化函数With单词必须大写,因为OC默认的就是"驼峰法",默认初始化函数就是init单词开头的,如果是initwithxxx就是认为是initwith单词开头的,造成找不到初始化方法
3> 方法,属性不能以new作为名称的开头

“`

版权声明:本文为博主原创文章,未经博主允许不得转载。

2、iOS 开发之字典转模型和 xib

标签:字典转模型   plist   xib   

原文地址:http://blog.csdn.net/wangbo_neuq/article/details/48081215

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!