我的AppDelegate带着以下所有熟悉的核心数据模板:如何处理NSPersistentContainer.loadPersistentStores中的错误?
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "newsapp")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container
}()
它也有这样的评论:
该应用程序的持续容器。此实现 创建并返回一个容器,该容器已将应用程序的商店加载到该容器中。此属性是可选的,因为有合法的 错误情况可能导致创建存储失败。
用代码替换此实现以正确处理错误。
fatalError()
导致应用程序生成崩溃日志并终止。您不应该在运输应用程序中使用此功能,尽管它在开发过程中可能很有用。这里的错误典型原因包括:
- 父目录不存在,无法创建,或不允许写。
- 由于设备锁定时的权限或数据保护,永久存储不可访问。
- 设备空间不足。
- 商店无法迁移到当前的型号版本。
检查错误消息以确定实际问题是什么。
真,还是选择了放弃在这个地方是一个坏主意,不仅它不是在生产中的应用程序允许的,但因为as I read elsewhere,如果数据存储被损坏因任何原因,用户将不得不重新安装应用程序不知道这一点。在这种情况下,用户也可以删除并忘记我的应用。
现在,人们应该怎么处理这样的错误呢?即使我编写错误处理代码,如果这些错误几乎从不发生,我该如何测试才能正常工作?
我看了一遍,但找不到任何例子。
我认为你应该为它创建一个提醒消息,就是这样。 – Mannopson