12
그래서 필요에 따라 행을 삽입/삭제/다시로드하여 tableview를 업데이트하지만, tableview가 항상 올바르게 업데이트되지 않는다고 확신하므로 잘못된 업데이트 일괄 처리에서 안전하게 실패 할 수있는 방법이 있습니까? ? 그것은 그 예외를 명중하면UITableView : 잘못된 업데이트 후 NSInternalInconsistencyException에서 복구 하시겠습니까?
이// Try to animate the updates. If something goes wrong, just reloadData.
@try {
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:deleteArray withRowAnimation:UITableViewRowAnimationMiddle];
[tableView reloadRowsAtIndexPaths:reloadArray withRowAnimation:UITableViewRowAnimationNone];
[tableView insertRowsAtIndexPaths:insertArray withRowAnimation:UITableViewRowAnimationMiddle];
[tableView endUpdates];
}
@catch (NSException * e) {
if([[e name] isEqualToString:NSInternalInconsistencyException]){
[tableView reloadData];
NSLog(@"animation failed, just reloading data");
}
else {
@throw e;
}
}
그러나, reloadData가 작동하지 않을 것 같다
는 지금, 나는이 있습니다. 기본적으로 UITableView를 작동 상태로 재설정하는 다른 방법이 있습니까?
예, 매우 이상적입니다. 나는 잠잠하게 들리는 것을 의미하지는 않지만, 이상적으로 모든 것이 잘 될 것이고 아무것도 잘못 될 것이 없다는 것이 이상적입니다. 불행히도, 거의 발생하지 않습니다. 프로덕션 코드에서는 사용자의 얼굴에 앱이 손상되는 대신 안전하게 실패합니다. –
@ David 당신이 절대적으로 회복을 원한다면. 예외를 잡은 다음 테이블 뷰를 다시 작성합니다. 이것이 거의 확실하게 메모리를 누설하고 다른 것들을 바람직하지 않은 상태로 남겨 둘 수 있음을 알아라. – cobbal