项目中遇到一个问题,那就是在iPhone5s上面,删除表的最后一条数据源会闪退,别的机型上是没问题的
#pragma mark - 设置指定哪些cell可以被编辑
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
if (self.dataSource.count > 0) {
MyMessageModel * model = self.dataSource[indexPath.row];
if ([model.read_type isEqualToString:@"0"]) {
return NO;
}else{
return YES;
}
}
return NO;
}
现在问题就是,每次删除数据源的最后一条消息时候,就是崩溃到这个 设置可编辑方法里的
MyMessageModel * model = self.dataSource[indexPath.row];
每次reson 都是 数据越界,哪为什么别的机型就不会csah呢?
最终是添加了一个数据的分类,解决了在 iPhone5S 机删除闪退的问题,来贴一下代码,
分类 .h ------------
#import
@interface NSArray (SYFExtension)
-(id)objectAtIndexCheck:(NSInteger)index;
@end
分类 .m ------------
#import "NSArray+SYFExtension.h"
@implementation NSArray (SYFExtension)
-(id)objectAtIndexCheck:(NSInteger)index{
if (index >= [self count]) {
return nil;
}
id value = [self objectAtIndex:index];
if (value == [NSNull null]) {
return nil;
}
return value;
}
@end
在控制器设置可编辑状态的方法里面,把原来的
MyMessageModel * model = self.dataSource[indexPath.row];
替换成
//objectAtIndexCheck 类别新增方法
MyMessageModel * model = [self.dataSource objectAtIndexCheck:indexPath.row];
最终测试,不再会cash.