san*_*mai 9 core-data ios swift
我的AppDelegate附带了以下所有熟悉的Core Data模板:
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
}()
Run Code Online (Sandbox Code Playgroud)
它还有以下评论:
应用程序的持久容器.此实现创建并返回一个容器,已将应用程序的存储加载到该容器.此属性是可选的,因为存在可能导致存储创建失败的合法错误条件.
用代码替换此实现以适当地处理错误.
fatalError()导致应用程序生成崩溃日志并终止.您不应在运输应用程序中使用此功能,尽管它在开发期间可能很有用.此处出现错误的典型原因包括:
- 父目录不存在,无法创建或不允许写入.
- 由于设备被锁定时的权限或数据保护,持久性存储无法访问.
- 设备空间不足.
- 商店无法迁移到当前的模型版本.
检查错误消息以确定实际问题是什么.
确实,在这个地方调用它是一个坏主意不仅在生产应用程序中不允许它,而且因为,正如我在其他地方读到的那样,如果数据存储因任何原因而被破坏,用户将不得不重新安装应用程序而不知道关于那个.在这种情况下,用户也可以删除并忘记我的应用程序.
现在,人们应该如何处理此类错误和其他错误?即使我编写了错误处理代码,如果这些错误几乎不会发生,我该如何测试呢?
我看了一遍,但找不到任何例子.
在大多数情况下,这fatalError是唯一对此错误有意义的"处理",尽管您可能希望显示一个警告,告诉用户首先发生了什么.如果你需要你的持久存储,但你无法加载它,你就有点搞砸了.
其中一些错误是开发过程中应该出现的问题.与商店迁移或数据保护问题一样 - 您需要对其进行测试,并在必要时在发布前修复应用.对于这样的情况,fatalError实际上是有道理的,因为只有你会经历它.
在那些列出的示例中,唯一可能出乎意料地出现的可能难以测试的是设备空间不足.您可以检查可用空间并提醒用户.但是你仍然无法从错误中恢复,除非你的应用程序使用了大量可以清除的空间.如果发生这种情况,iOS就会警告他们他们的空间不足,所以不必自己动手.
如果你没有很多数据可以清除,那么fatalError这里仍然有意义.
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |