-1

这是我的代码,它应该删除选定的行。它导致应用程序崩溃,因为它声称行数不正确。我查了,不正确;表中的行已被删除,但显然行数尚未更新(代码确实被命中)......这怎么可能?(我有另一个 UITableViewController 具有确切的代码,可以工作)。我如何解决它?

if (editingStyle == UITableViewCellEditingStyleDelete) {

    //  remove row from the table
    SQLite *sql = [[SQLite alloc] init];
    [sql deleteReadingsRow: indexPath.row];

    // Delete the row from the data source
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}   

这是确定行数的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    SingletonListOfReadings  *rShareInstance = [SingletonListOfReadings sharedInstance];

    return rShareInstance.listOfReadings.count; // Return the number of rows in the section
}
4

2 回答 2

0

我发现了问题......我依赖于一个单例(SingletonListOfReadings),当在 d/b 表中删除该行时,它没有被重置。

于 2012-04-26T21:42:09.323 回答
0

当您发现问题时,您应该考虑改用NSFetchedResultsController。只需很少的工作,它就可以在添加、删除或修改行时自动更新您的表。一般来说,它比依赖于保持单例同步更可靠。有很多将它与表格一起使用的示例。

于 2012-04-26T21:52:18.337 回答