table設定可編輯刪除cell時,刪除最後一條資料來源不同機型閃退的問題

weixin_34320159發表於2017-07-04

專案中遇到一個問題,那就是在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.

相關文章