由于Core Data故障,应用程序在启动时崩溃

时间:2013-05-06 08:29:32

标签: ios core-data exception-handling

测试人员遇到了(iOS)应用程序因启动无法满足的Core Data故障而崩溃的情况(抛出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)数据库,我猜测数据库的一部分包含导致错误的损坏数据。

2 个答案:

答案 0 :(得分:0)

当我在应用程序中看到错误时,通常会因释放NSManagedObjectContext而发生。当从上下文“获取”NSManagedObject,然后释放上下文时,对象会触发故障以释放内存。因此,检查上下文是否存在可以告诉您这是否是问题。如果是,请确保以正确的方式保留它(如果使用ARC,请在类的接口文件中声明上下文。

答案 1 :(得分:0)

我知道这不太理想,但在有问题的行周围添加@try / @catch并处理catch中的错误会阻止您的应用崩溃。