首页 > 解决方案 > 如何在 iOS Swift 中处理 CoreData 崩溃?

问题描述

我需要处理核心数据崩溃。我的代码在 managedObjectContext.save() 上崩溃了。但是 catch 块没有捕获任何异常。为了避免崩溃,我怎样才能更好地编写我的 Catch 块这是我的代码。

do {
      try managedObjectContext.save()              
   } 
catch let error as NSError {
      Print.print("Error saving data store: \(error)")
     }

标签: iosiphoneswiftcrash

解决方案


这看起来真的像你搞砸了上下文、持久存储和它的协调器的初始化。你最好调查一下。SO 上已经有类似的帖子,比如这个

更重要的是,您不会try-catch在 Swift 中拦截此类异常。实际上,Swifttry-catch与异常没有任何关系,但它是一个高级 API,用于拦截报告的错误。在您的情况下,您只需拦截将数据保存到数据库时可能报告的错误。但是错误似乎来自更深的地方。

更进一步,整个核心数据仍然完全在 ObjectiveC 中,它具有完全不同的异常抛出系统,尽管这些异常可能被 ObjectiveC 拦截,try-catch但相同的异常不会被来自 Swift 的异常拦截。该系统所做的只是替换了将指向错误的指针输入到方法中:.save(&error)这是在objectiveC中使用的。只有当此错误为非空时,您的 catch 块才会触发。


推荐阅读