数据储存

YYModel使用指引

2022-05-11  本文已影响0人  守正出奇HJ

模型->jsonString

方式1.

NSDictionary *paramDict = getTakeupInfo.yy_modelToJSONObject;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:paramDict/*getTakeupInfo.mj_keyValues*/

                                                    options:NSJSONWritingPrettyPrinted

                                                      error:nil ];

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

方式2 [queryCalendarInfo yy_modelToJSONString];

模型->字典

[outputInfo yy_modelToJSONObject];

jsonString -> 模型

id param = [outputInfo.D yy_modelToJSONObject];

AddEventCallbackInfo *addEventCallbackInfo = [AddEventCallbackInfo yy_modelWithDictionary:param];

id paramDict = [inputInfo yy_modelToJSONObject];

InputInfo *inputInfo = [InputInfo yy_modelWithDictionary:parameters];

NSData *jsonData = [(NSString *)self.eventInfo.su dataUsingEncoding : NSUTF8StringEncoding];

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:NULL];

InputInfo *inputInfo = [InputInfo yy_modelWithDictionary:dict];

NSString *str = userTakeupInfo.P;

NSData *jsonData = [(NSString *)str dataUsingEncoding : NSUTF8StringEncoding];

ContactInfo *contactInfo = nil;

if(jsonData){

    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:NULL];

    contactInfo = [ContactInfo yy_modelWithDictionary:dict];

}

jsonString ->模型数组

NSArray *array = [NSArray yy_modelArrayWithClass:[UserTakeupInfo class] json:outputInfo.D];

NSMutableArray *userTakeupInfoArray = [NSMutableArray arrayWithArray:array];

模型数组 -> JsonString

[contactInfoArray yy_modelToJSONString]

模型数组->字典数组

id param = [corpDomainArray yy_modelToJSONObject];

json字典数组-> 字典数组

NSData *jsonData = [(NSString *)dataJson dataUsingEncoding : NSUTF8StringEncoding];

NSArray *dictDataArray = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:NULL];

#import <YYModel/YYModel.h>

+ (NSDictionary *)modelContainerPropertyGenericClass {

    return @{@"p" : [PageInputInfo class]

            };

}

TokenLoginOutServerInfo 中的IPList无法进行转换对应属性 ,手动再次转换了一次

NSData *jsonData = [(NSString *)serverInfo dataUsingEncoding : NSUTF8StringEncoding];

NSDictionary *param = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:NULL];

//                id param = [serverInfo yy_modelToJSONObject];

TokenLoginOutServerInfo *outServerInfo = [TokenLoginOutServerInfo yy_modelWithDictionary:param];

NSArray *array = [NSArray yy_modelArrayWithClass:[TokenLoginOutServerIPInfo class] json:[param objectForKey:@"IPList"]];

outServerInfo.IPList = array;

//返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。

+ (NSDictionary *)modelCustomPropertyMapper {

    return @{@"name" : @"n",

              @"page" : @"p",

              @"desc" : @"ext.desc",

              @"bookID" : @[@"id",@"ID",@"book_id"]};

}

// 字典转模型

+ (nullable instancetype)modelWithDictionary:(NSDictionary *)dictionary;

// json转模型

+ (nullable instancetype)modelWithJSON:(id)json;

// 模型转NSObject

- (nullable id)modelToJSONObject;

// 模型转NSData

- (nullable NSData *)modelToJSONData;

// 模型转json字符串

- (nullable NSString *)modelToJSONString;

// 模型深拷贝

- (nullable id)modelCopy;

// 判断模型是否相等

- (BOOL)modelIsEqual:(id)model;

// 属性数据映射,用来定义多样化数据时转换声明

+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper;

// 属性自定义类映射,用来实现自定义类的转换声明

+ (nullable NSDictionary<NSString *, id> *)modelContainerPropertyGenericClass;

// 属性黑名单,该名单属性不转换为model

+ (nullable NSArray<NSString *> *)modelPropertyBlacklist;

// 属性白名单,只有该名单的属性转换为model

+ (nullable NSArray<NSString *> *)modelPropertyWhitelist;

// JSON 转为 Model 完成后,该方法会被调用,返回false该model会被忽略

// 同时可以在该model中做一些,转换不能实现的操作,如NSDate类型转换

- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic;

// Model 转为 JSON 完成后,该方法会被调用,返回false该model会被忽略

// 同时可以在该model中做一些,转换不能实现的操作,如NSDate类型转换

- (BOOL)modelCustomTransformToDictionary:(NSMutableDictionary *)dic

上一篇 下一篇

猜你喜欢

热点阅读