1
本地缓存的问题 迭代开发 本地缓存 存取类型发生变化 导致 升级后 客户升级 出现闪退情况
[self.view endEditing:YES];
NSLog(@"%@",self.mutableDictionary);
{
NSString *string = [self.mutableDictionary objectForKey:@"col_023"];
if (![Tools isBlankString:string]) {
if ([Tools isValidateChinese:string]) {
self.model.col_023 = string;
}else{
[Tools myToast:@"托寄物请输入中文"];
return;
}
}else{
[Tools myToast:@"请填写托寄物"];
return;
}
}
低版本 本地存取的是字符串 格式的数据 迭代升级版本时 本地存取的数据格式 更改为了数组 导致客服升级后 字符串数据 变成数组 处理时 解析数据 类型失败 出现闪退
迭代代码
- (void)loadOldDate{
NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:@"col_023"];
NSMutableArray *arrM = [NSMutableArray arrayWithArray:arr];
self.historyArray = arrM;
迭代时 没有对以前本地缓存 做任何处理 造成失败 闪退
解决方法
1
取出数据 判断数据类型 是否 有错 在处理
NSUserDefaults *use = [NSUserDefaults standardUserDefaults];
self.array = [NSMutableArray arrayWithArray:[use objectForKey:orderHistory]];
for (NSInteger i = 0; i < self.array.count; i++) {
if (![self.array[i] isKindOfClass:[NSDictionary class]]) {
[self.array removeObjectAtIndex:i];
}
}
2
直接替换 Key值
借此提醒自己 和团队 以后 项目迭代开发 一定要进行迭代测试 切忌
2 compare 坑
#define kIOS7_OR_LATER ([[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending)
#define kIOS8_OR_LATER ([[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending)
#define KIOS9_OR_LATER ([[[UIDevice currentDevice] systemVersion] compare:@"9.0"] != NSOrderedAscending)
坑在这里
#define KIOS10_OR_LATER ([[[UIDevice currentDevice] systemVersion] compare:@"10.0"] != NSOrderedAscending)
切记 compare 比较字符窜的大小 是按照 ASCII 来比较的 这样的话
[@“8.0” compare @“10.0”] 就是8.0大了哦
这样就会导致 8.0的系统 有可能去执行 10.0的api 就会出现闪退的情况
结局的办法 转为浮点型
([[[UIDevice currentDevice] systemVersion] floatValue])