美文网首页iOS新手学习
IOS中字典数组的模型封装

IOS中字典数组的模型封装

作者: 南波万_ | 来源:发表于2016-03-26 11:24 被阅读1618次

用模型取代字典数组的好处

  • 使用字典的弊端
  • 一般情况下设置字典数据和取出字典数据都得使用字符串类型的"key",编写这些"key"时,Xcode没有智能的提示,只能手动的去敲那些字符串
    比如
```objc

NSString *name = dict[@"name"];
dict[@"name"] = @"jordan";
```

  • 如果手敲字符串key,key就很容易写错,此时编译器是不会有任何的警告和报错,则会造成数据存取和读取出错

  • 模型的优点

    • IOS中的模型,其实就是数据模型,专门用于存放数据的对象
    • 模型设置数据和读取都是通过其属性,属性名称如果写错,编译器会做出警告或者报错,提示修复数据的正确性
    • 同样,使用模型访问属性时,Xcode会有数据提示,可以提高编写代码的效率
     NSString *name = dict.name;
     dict.name = @"jordan";
    

字典转模型过程

  • 字典转模型的过程最好将其封装在模型内部
  • 在@interface中连线数组
      @interface property (strong, nanotomic) NSArray * shop;
    
  • 模型应该提供一个可以传入的字典参数的构造方法
  • 新建cocoa touch class 继承于NSObject,设置商品的名称和图片属性
  • .h中传入两个构造方法

import <Foundation/Foundation.h>

@interface shop : NSObject
@interface property (strong, nanotomic) NSString * name;
@interface property (strong, nanotomic) NSString * icon;
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)initWithDict:(NSDictionary *)dict;
@end
```

  • .m中实现构造方法

    #import "shop.h"
    @ implementation shop
     -(instancetype)initWithDict:(NSDictionary *) dict
     {
         if (self = [super init]) {
              self.name = dict@"name";
              self.icon = dict@"icon";
     }
         return self;
     }
     +(intancetype)shopWithDict:(NSDictionary *)dict
     {
           return [[self alloc] initWithDict:dict];
     }
     @end
    
  • 控制器中加载字典模型

  • 使用懒加载字典模型

pragma mark - 加载字典数组

  - (NSArray *) shops{
   if (_shop == nil){
      //1、加载一个字典数组
      NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"shops" ofType:@"plist"]];
      //2、将字典数组转换为字典模型
      NSMutableArray *shopArray = [NSMutableArray array];
      for (NSDictionary *dict in dictArray){
      shop *s = [shop shopWithDict:dict];
      [shopArray addObject:shop];
      }
      //3、赋值
      _shop = shopArray;
    }
  return _shops;
  }

  ```

相关文章

  • IOS中字典数组的模型封装

    用模型取代字典数组的好处 使用字典的弊端 一般情况下设置字典数据和取出字典数据都得使用字符串类型的"key",编写...

  • Swift 字典转模型

    这里探讨字典转模型中模型的类型单一模型模型嵌套 (模型中包含模型 || 模型中包含模型数组) Swfit的字典转模...

  • iOS 字典转模型

    字典转模型 1.简单的字典转模型 2.字典中包含数组 2.1首先在头文件创建一个数组包含子模型 2.2在.m文件中...

  • 100-SQLite基础

    iOS中的数据存储方式 Plist(NSArray\NSDictionary),只能存储数组,字典,但是数组和字典...

  • iOS-模型

    在开发中,经常使用到模型,通常做法就是字典转模型 字典转模型的过程最好封装在模型内部 模型应该提供一个可以传入字典...

  • iOS开发中对MJExtension的新认知

    MJExtension对iOS开发者都不陌生,大家经常会使用其将字典转成模型,字典数组转成模型,但现在貌似更多的人...

  • Runtime字典转模型

    用一个分类实现字典转模型,分类头文件如下: 如果模型的属性有字典数组,想要将该字典数组转换成模型数组,那么在该模型...

  • MJExtension字典转模型

    本文代码下载地址 复杂的字典 --> 模型 (模型里面嵌套数组,数组中又嵌套了模型) json数据如下: (1)首...

  • iOS Swift 字典转模型 模型存沙盒

    前言: 本篇接着上一篇iOS Swift 原生 字典数组转模型 JSONDecoder 对象存储 NSKeyedA...

  • ios字典和数组输出中文乱码

    在iOS中打印字典或者数组对象,系统会默认调用字典对象和数组对象的descriptionWithLocale:方法...

网友评论

    本文标题:IOS中字典数组的模型封装

    本文链接:https://www.haomeiwen.com/subject/pwedlttx.html