jsonMode 的使用 《总体感觉就是看的再多都不如敲一遍收获大》
首先用cocoaPods 导入JSONModel,AFNetworking
请求下来的数据是html格式的
1、首先新建一个MODE,继承自JsonMode
2、根据网络请求的数据,建立模型
{ "status": 200, "info": "请求成功", "data": [ {}, {} ], "banner": [ {}, {} ], "statistics": { "turnover": "17,454.83", "profit": "100.21" }, "server_phone": "400-1234-123" }
Mode里的模型 .h文件
@interface DataMode : JSONModel
@property (nonatomic , strong) NSString * loanId;
@property (nonatomic , strong) NSString * loanCategory;
@property (nonatomic , strong) NSString * status;
@property (nonatomic , strong) NSString * loanTitle;
@property (nonatomic , strong) NSString * loanInterestRate;
@property (nonatomic , strong) NSString * loanDuration;
@property (nonatomic , strong) NSString * investorCount;
@property (nonatomic , strong) NSString * biddingProgress;
@end
@interface BannerMode : JSONModel
@property (nonatomic , strong) NSString * url;
@property (nonatomic , strong) NSString * htmlUrl;
@property (nonatomic , strong) NSString * htmlTitle;
@end
@interface statisticsMode : JSONModel
@property (nonatomic , strong) NSString * turnover;
@property (nonatomic , strong) NSString * profit;
@end
@interface HomeMode : JSONModel
@property (nonatomic , assign) int status;
@property (nonatomic , strong) NSString * info;
@property (nonatomic , strong) NSArray <DataMode *> * data;//要和json里的kye值对应
@property (nonatomic , strong) NSArray <BannerMode*> * banner;//要和json里的kye值对应
@property (nonatomic , strong) statisticsMode * statistics;//要和json里的kye值对应
@property (nonatomic , strong) NSString * server_phone;
@end
Mode .m文件
@implementation HomeMode
+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
return YES;
}
@end
@implementation DataMode
+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
return YES;
}
@end
@implementation BannerMode
+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
return YES;
}
@end
@implementation statisticsMode
+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
return YES;
}
@end
这个方法的作用 请求的数据mode里没有该对象,不会报错具体使用
[manager GET:str parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
HomeMode * homeData = [[HomeMode alloc]initWithData:responseObject error:nil];
BannerMode * banner = homeData.banner[0];
NSLog(@"%@",((NSDictionary * )banner)[@"url"]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"%@",error);
}];
学习中遇到的问题:
1、jsonMode里的嵌套模型 ,
@interface HomeMode : JSONModel
@property (nonatomic , assign) int status;
@property (nonatomic , strong) NSString * info;
@property (nonatomic , strong) NSArray <DataMode *> * data;//要和json里的key值对应
@property (nonatomic , strong) NSArray <BannerMode*> * banner;//要和json里的key值对应
@property (nonatomic , strong) statisticsMode * statistics;//要和json里的key值对应
@property (nonatomic , strong) NSString * server_phone;
@end
要和 json里的key对应。