0

测试人员遇到了一种情况,即(iOS)应用程序在启动时由于无法实现的核心数据故障(NSObjectInaccessibleException抛出异常)而崩溃。因为应用程序做的第一件事是用托管对象填充表视图,所以应用程序在启动时继续崩溃。

问题很简单。我该如何解决这个问题,以便测试人员至少可以继续使用应用程序而不会丢失数据?

为了为这个问题提供更多背景信息,当表格视图单元格配置如下所示时,应用程序崩溃。此方法从 调用tableView:cellForRowAtIndexPath:

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    // Fetch Store
    CCDStore *store = [self.fetchedResultsController objectAtIndexPath:indexPath];

    // Configure Cell
    [cell.textLabel setText:[store name]]; // Exception is thrown due to Core Data fault
    [cell.detailTextLabel setText:[store numberOfLists]];
}

因为我无权访问设备或(SQLite)数据库,所以我的猜测是数据库的一部分包含导致故障的损坏数据。

4

2 回答 2

0

我知道这并不理想,但是添加@try / @catch有问题的环绕行并处理 catch 中的错误将防止您的应用程序崩溃。

于 2013-12-12T18:09:59.407 回答
0

当我在我的应用程序中看到错误时,通常是由于发布了NSManagedObjectContext. 当NSManagedObject从上下文中“获取”一个,然后释放上下文时,对象会触发一个错误以释放内存。所以也许检查上下文是否存在可以告诉你这是否是问题所在。如果是,请确保以正确的方式保留它(如果使用 ARC,请在类的接口文件中声明上下文。

于 2013-05-06T08:33:27.130 回答