UITableView: восстановление из NSInternalInconsistencyException после плохих обновлений? - PullRequest
13 голосов
/ 29 июня 2010

Поэтому я обновляю табличное представление, вставляя / удаляя / перезагружая строки по мере необходимости, но, поскольку я не уверен на 100%, что табличное представление всегда будет обновляться правильно, есть ли способ безопасно завершить работу из-за плохой партииобновления?

Прямо сейчас у меня есть это:

    // 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 в рабочее состояние?

1 Ответ

3 голосов
/ 29 июня 2010

В идеале вы должны поддерживать таблицу с массивом, который гарантированно сделает то, что от нее ожидает.UIKit ожидает, что исключения будут фатальными (это соответствует философии Apple, согласно которой исключения указывают на ошибку программиста.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...