iOS模型以及使用

个人习惯,也可以不这样写

创建模型基类:

#import <Foundation/Foundation.h>

@interface WJBaseModel : NSObject

//将字典内的值赋给申明的相应属性
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)modelWithDict:(NSDictionary *)dict;

@end
#import "WJBaseModel.h"

@implementation WJBaseModel

- (instancetype)initWithDict:(NSDictionary *)dict {
    self = [super init];
    if (self) {

    }
    return self;
}

+ (instancetype)modelWithDict:(NSDictionary *)dict {
    return [[self alloc]initWithDict:dict];
}

@end

创建模型:

#import <Foundation/Foundation.h>
#import "WJBaseModel.h"
@interface AddressModel : WJBaseModel

@property (nonatomic,copy)NSString *name;//名称
@property (nonatomic,copy)NSString *address;//地址
@property (nonatomic,copy)NSString *phoneNumber;//电话号码
@property (nonatomic,copy)NSString *defaultAddress;//默认地址

@property (nonatomic,copy)NSString *addressDetail;//详细地址
@property (nonatomic,copy)NSString *num;//邮编

@end
#import "AddressModel.h"

@implementation AddressModel

- (instancetype)initWithDict:(NSDictionary *)dict {
    self = [super initWithDict:dict];
    if (self) {
        self.name = dict[@"name"];
        self.address = dict[@"address"];
        self.phoneNumber = dict[@"phoneNumber"];
        self.defaultAddress = dict[@"defaultAddress"];
        self.addressDetail = dict[@"addressDetail"];
        self.num = dict[@"num"];
    }
    return self;
}

@end

注意:上面字典的键要和传入字典的键相同

使用:

1.添加数据:(假数据)

  [self initDataSource:@[@{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"0",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"},
                           @{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"1",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"},
                           @{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"0",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"},
                           @{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"0",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"},
                           @{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"0",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"},
                           @{@"name":@"黄智擒",
                             @"phoneNumber":@"123456789",
                             @"address":@"时代荆轲名媛 17-1102",
                             @"defaultAddress":@"0",
                             @"addressDetail":@"addressDetail",
                             @"num":@"987654321"}]];

2.将模型添加到可变数组上(只有一个模型的话就用字典算了)

#pragma mark - 模型数据

- (void)initDataSource:(NSArray *)dicArray {

    _dataSource = [[NSMutableArray alloc]init];for (NSDictionary *dic in dicArray) {

        AddressModel *model = [AddressModel modelWithDict:dic];

        [_dataSource addObject:model];

    }
}

3.在UITableView中使用(补充使用)

cell中申明模型属性

@property (nonatomic,strong)AddressModel  *model;

重写set方法,添加模型数据到相应的控件上显示

-(void)setModel:(AddressModel *)model{
    _model = model;
    _nameAndNum.text = [NSString stringWithFormat:@"%@ %@",model.name,model.phoneNumber];
    _address.text = [NSString stringWithFormat:@"%@ %@",model.address,model.addressDetail];
}

效果图:

时间: 2024-10-08 12:08:10

iOS模型以及使用的相关文章

字典转模型框架 Mantle的使用:国外程序员最常用的iOS模型

Mantle简介 Mantle 是iOS和Mac平台下基于Objective-C编写的一个简单高效的模型层框架. Mantle能做什么 Mantle可以轻松把JSON数据.字典(Dictionary)和模型(即Objective对象)之间的相互转换,支持自定义映射,并且内置实现了NSCoding和NSCoping,大大简化归档操作. 为什么要使用Mantle 传统的模型层方案遇到的问题 通常我们用Objective-C写的模型层遇到了什么问题? 我们可以用  Github API 来举例.现在假

IOS模型分层网络协议

OSI模型是国际标准化组织ISO创立的.这是一个理论模型,并无实际产品完全符合OSI模型.制订OSI模型只是为了分析网络通讯方便而引进的一套理论.也为以后制订实用协议或产品打下基础. OSI模型共分七层:从上至下依次是 应用层指网络操作系统和具体的应用程序,对应WWW服务器.FTP服务器等应用软件 表示层数据语法的转换.数据的传送等 会话层 建立起两端之间的会话关系,并负责数据的传送 传输层 负责错误的检查与修复,以确保传送的质量,是TCP工作的地方.(报文) 网络层 提供了编址方案,IP协议工

IOS 模型加载

// [self setValuesForKeysWithDictionary:@{}]; -(void)setValue:(id)value forKey:(NSString *)key{ if([value isEqualToString:@"key"]){ self.nameString=key; }else{ [super setValue:value forKey:key]; } }

iOS 模型之中添加非空的方法

- (id)initWithDict:(NSDictionary *)dict { self = [super init]; if (self) { [self setValuesForKeysWithDictionary:dict]; self.max = [NSString stringWithFormat:@"%@", dict[@"max"]]; self.average = [NSString stringWithFormat:@"%@"

转载 --ios 模型-setValuesForKeysWithDictionary

应用场景:app请求后端数据,返回的数据是JSON形式,如: { "is_favor" = 0; "is_follow" = 0; "is_praise" = 0; "is_self" = 0; } 我经常new一个接受该组数据的class,然后用对象的setValuesForKeysWithDictionary方法对每个字段自动进行赋值.   HSTopicModel *model = [HSTopicModel new];

学习笔记TF066:TensorFlow移动端应用,iOS、Android系统实践

TensorFlow对Android.iOS.树莓派都提供移动端支持. 移动端应用原理.移动端.嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应:二在本地运行模型,PC训练模型,放到移动端预测.向服务端请求数据可行性差,移动端资源稀缺.本地运行实时性更好.加速计算,内存空间和速度优化.精简模型,节省内存空间,加快计算速度.加快框架执行速度,优化模型复杂度和每步计算速度.精简模型,用更低权得精度,量化(quantization).权重剪枝(weight prun

Sprint 5 summary: UI 界面更新,Azure端部署和用户反馈分析 12/28/2015

本次sprint主要完成的任务有对手机APP的UI界面的更新,同时对Azure客户端的部署进行了相应的学习和有关的程序设计.同时对于ALPHA release的用户反馈做出相应的分析以确定接下来工作的重点. 工作进度: 1. UI 的界面更新和完善工作主要由兆阳负责,主要是对APP中的自动标签和浏览布局进行了相应的改进.其中大部分与Sprint2中的界面有所区别,并且对整体的APP工作性能有了一些改善.相应的改进feature有如下: 1). 个人活动分类浏览: 其中将用户的各个照片依据内容,时

openstack--自动部署

openstack 是对基础资源的一种抽象,完成了对硬件层的抽象, 对外提供一种资源使用的统一接口, 完成了iaas的落地, 就像 网络的IOS 模型一样, 分层设计理念 Fuel https://www.mirantis.com/products/mirantis-openstack-software/ https://wiki.openstack.org/wiki/Fuel http://my.oschina.net/u/2381034/blog/493457 devstack https:

openstack--之庖丁解牛

openstack 是对基础资源的一种抽象,完成了对硬件层的抽象, 对外提供一种资源使用的统一接口, 完成了iaas的落地, 就像 网络的IOS 模型一样, 分层设计理念 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1) http://www.cnblogs.com/popsuper1982/p/3927390.html