获取数据是最重要的,数据都拿不到,怎么做功能呢
后台返回的json数据格式如下

图片.png
分析下:SearchKeys是一个key,value就是三个数组
每个数组里面又是字典,字典里面又有模型。感觉有点乱啦
1.定义一级模型DCNationModel,全部小写
#import "DCNationSearchModel.h"
@interface DCNationModel : NSObject
@property(nonatomic,strong)NSArray *searchKey;//数组
@property(nonatomic,copy)NSString *type;//类型:城市名、酒店、地址
@property(nonatomic,assign)NSInteger count;//记录条数
.m文件实现yymodel的第一个方法
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper
{
return @{
@"type":@"Type",
@"count":@"Count",
@"searchKey":@"SearchKey"
};
}
因为一级模型嵌套二级模型,model有model,就是searchKey
所以还需要实现第二个方法。坑在这个地方。一开始定义searchKey为DCNationSearchModel searchKey,老是显示不出来,

图片.png
后面才发现它是数组来的,每个数组对应一个model。
+ (NSDictionary *)modelContainerPropertyGenericClass{
return @{
@"searchKey":[DCNationSearchModel class],
};
}
总结://通过实现 协议中的 modelContainerPropertyGenericClass,返回 Model 属性容器中需要存放的对象类型,YYModel 会自动进行处理。对象类型可以是 Class 或者 Class name
2.现在定义二级模型DCNationSearchModel
.h
#import "DCNationMap.h"
@interface DCNationSearchModel : NSObject
@property(nonatomic,copy)NSString *Type;
@property(nonatomic,assign)NSInteger Value;
@property(nonatomic,copy)NSString *Key;
@property(nonatomic)DCNationMap *MapPoint;//注意这里!
@property(nonatomic,assign)NSArray *Tags;
对应后台返回JSON中的大写,一模一样。
现在出现三级模型DCNationMap,所以
.m文件中
+ (NSDictionary *)modelContainerPropertyGenericClass{
return @{
@"MapPoint":[DCNationMap class],
};
}
3.现在定义三级模型DCNationMap
.h文件 定义属性大写和后台返回一样
@interface DCNationMap : NSObject
//地图类型,B(百度)、T(腾讯)、G(谷歌)
@property (nonatomic, strong) NSString *MapType;
//经度
@property (nonatomic, assign) double Longitude;
//纬度
@property (nonatomic, assign) double Latitude;
.m文件 什么都不用做,会自动转换的