table设置可编辑删除cell时,删除最后一条数据源不同机型闪退的问题

项目中遇到一个问题,那就是在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.

你可能感兴趣的:(table设置可编辑删除cell时,删除最后一条数据源不同机型闪退的问题)