您的位置:首页 > 其它

数据模型的建立

2016-01-19 22:51 295 查看
开发中使用字典的坏处,最明显的就是plist文件中key名,需要手动敲出来,并且编译器不会报错。我在有一次项目打错了key,查了好久的错,结果才发现是这个初学者才会犯的错误。
如果要用请务必打开该plist的副本,粘贴复制。
因为该缺陷我们引入的模型的概念,大致的思路是
plist➡️字典数组➡️模型数组
model必须实现的

1.字典转模型的过程最好封装在模型内部
2.模型应该提供一个可以传入字典参数的构造方法
3.返回数据
代码如下
model类(假使plist中的key名有两个name,和icon)
#import <Foundation/Foundation.h>



@interface MyModel : NSObject



@property(nonatomic,copy)NSString *name;

@property(nonatomic,copy)NSString *icon;



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

+ (instancetype)appWithDict:(NSDictionary *)dict;

@end

[/code]

#import "MyModel.h"



@implementation MyModel

-(instancetype)initWithDict:(NSDictionary *)dict

{

//字典转模型的过程

if (self = [super init]) {

self.name = dict[@"name"];

self.icon = dict[@"icon"];

}

//返回数据

return self;

}

//为了更好的协作

+ (instancetype)appWithDict:(NSDictionary *)dict

{

return [[self alloc] initWithDict:dict];

}

@end

[/code]

获取plist,并将数据传给model类。

- (NSArray *)app{

if (_apps == nil) {

//获得plist全路径

NSString *path = [[NSBundle mainBundle]pathForResource:@"app.plist" ofType:nil];


NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];

//做个遍历将dictArray所有字典转成模型对象放到新的数组中

NSMutableArray *Apparray = [NSMutableArray array];

for (NSDictionary *dict in dictArray) {

//    MyModel *app = [[MyModel alloc]initWithDict:dict];

   MyModel *app = [MyModel appWithDict:dict];

    [Apparray addObject:app];

}

_apps =Apparray;

}

return _apps;

}

[/code]

然后可以验证啦

[self app];

for (int index = 0; index<10; index++) {

MyModel *modelInfo = self.apps[index];

NSString *modelName = modelInfo.name;

NSString *modelIcon = modelInfo.icon;

}

//打上断点或者打印一下观察一下是否正常输出

[/code]

简单的写了个demo来介绍,更加复杂的用法就是后话了。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: