美文网首页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中字典数组的模型封装

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