MJExtension中的一个小坑

坑:

用MJExtension 中的mj_keyValues 配合系统的+ (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 将复杂类型的数据转成Json格式的数据时,当复杂类型中含有NSDate类型时程序会崩溃。


解决方案:

在 NSObject+MJKeyValue 分类中的- (NSMutableDictionary *)mj_keyValuesWithKeys:(NSArray *)keys ignoredKeys:(NSArray *)ignoredKeys方法里加入NSDate类型判断,将NSDate类型转为NSNumber类型

// 3.处理模型里面有NSDate类型型的情况

if ([value isKindOfClass:[NSDate class]]) {

// NSDate *date = value;

NSNumber * date = [NSNumber numberWithInteger:[value timeIntervalSince1970]];

value = date;

}

在模块化这样的Json字符串的时候请重写setValue的两个方法(如果你模块化用的是这个方法- (void)setValuesForKeysWithDictionary:(NSDictionary*)keyedValues)

- (void)setValuesForKeysWithDictionary:(NSDictionary*)keyedValues{

for (NSString *key in keyedValues.allKeys) {

[self setValue:keyedValues[key] forKey:key];

}

}


-(void)setValue:(id)value forKey:(NSString *)key{

if ([key isEqualToString:@"stratDate"]) {

if ([value isKindOfClass:[NSNumber class]]) {

value = [NSDate dateWithTimeIntervalSince1970:[(NSNumber *)value integerValue]];

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 面向对象三大支柱封装:就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控...
    WangDavid阅读 5,869评论 0 2
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,876评论 0 9
  • KVC(Key-value coding)键值编码,单看这个名字可能不太好理解。其实翻译一下就很简单了,就是指iO...
    朽木自雕也阅读 5,490评论 6 1
  • 一 快速生成@property 1 当我们需要用模型去实现一个比较小的功能的时候,由于我们需要对plist文件进行...
    莫许阅读 3,860评论 1 1
  • 150. control reaches end of non-void function //缺少返回值 ret...
    i得深刻方得S阅读 4,821评论 0 0

友情链接更多精彩内容