MJExtension中的一个小坑

作者: 看晚霞洗澡的海鸥 | 来源:发表于2016-11-03 11:10 被阅读363次

    坑:

    用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]];

    }

    }

    相关文章

      网友评论

        本文标题:MJExtension中的一个小坑

        本文链接:https://www.haomeiwen.com/subject/ayvbuttx.html