坑:
用MJExtension 中的mj_keyValues 配合系統(tǒng)的+ (nullable NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error; 將復(fù)雜類型的數(shù)據(jù)轉(zhuǎn)成Json格式的數(shù)據(jù)時录择,當復(fù)雜類型中含有NSDate類型時程序會崩潰腥例。
解決方案:
在 NSObject+MJKeyValue 分類中的- (NSMutableDictionary *)mj_keyValuesWithKeys:(NSArray *)keys ignoredKeys:(NSArray *)ignoredKeys方法里加入NSDate類型判斷,將NSDate類型轉(zhuǎn)為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]];
}
}
}