由于核心数据故障,应用程序在启动时崩溃
Posted
技术标签:
【中文标题】由于核心数据故障,应用程序在启动时崩溃【英文标题】:Application crashes on launch due to Core Data fault 【发布时间】:2013-05-06 08:29:31 【问题描述】:测试人员遇到了一种情况,即(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)数据库,我猜测是部分数据库包含损坏的数据导致故障。
【问题讨论】:
【参考方案1】:当我在我的应用程序中看到错误时,通常是因为释放了NSManagedObjectContext
。当从上下文中“获取”NSManagedObject
,然后释放上下文时,对象会触发错误以释放内存。所以也许检查上下文是否存在可以告诉你这是否是问题所在。如果是,请确保以正确的方式保留它(如果使用 ARC,请在类的接口文件中声明上下文。
【讨论】:
我已经执行了这些检查,但在这种情况下这似乎不是问题。【参考方案2】:我知道这并不理想,但是在有问题的行周围添加 @try / @catch
并在 catch 中处理错误将防止您的应用崩溃。
【讨论】:
以上是关于由于核心数据故障,应用程序在启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章