【问题标题】:Crash loading data from coreData in airplane mode在飞行模式下从 coreData 加载数据时崩溃
【发布时间】:2016-10-15 14:34:52
【问题描述】:

当我通过互联网加载我的应用程序然后进入飞行模式时,我可以很好地加载保存到 coreData 的帖子。但是如果我已经在飞行模式下加载我的飞机,我会在这条线上崩溃:

let results = try moc.fetch(fetchRequest)

来自这个函数:

   func loadImages(_ fetched:@escaping (_ images:[FullRes]?) -> Void) {

    saveQueue.async() {
        let context = self.getContext()

        guard let moc = context else {
            return
        }


        let fetchRequest: NSFetchRequest<NSFetchRequestResult> = FullRes.fetchRequest()
        //let request: NSFetchRequest<NSFetchRequestResult> = FullRes.fetchRequest()
        //let fetchRequest = NSFetchRequest(entityName: "FullRes")//NSFetchRequest(entityName: "FullRes")


        do {

            let results = try moc.fetch(fetchRequest)

            let imageData = results as? [FullRes]
            DispatchQueue.main.async() {
                fetched(imageData)

            }
        } catch let error as NSError {
            print("Could not fetch \(error), \(error.userInfo)")
            return
        }
    }
}

它给了我这样的信息:

由于未捕获的异常“NSInvalidArgumentException”而终止应用,原因:“executeFetchRequest:error: is not a valid NSFetchRequest.”

不知道为什么会这样……有什么想法吗?

【问题讨论】:

  • 如果错误是关于请求无效,您需要包含FullRes.fetchRequest()的来源。

标签: ios objective-c swift core-data


【解决方案1】:

我把它修好了

if Reachability.isConnectedToNetwork() == true {
    }

在 ViewDidload 中的 loadPosts() 函数周围,因为它正在从 AppDelegate 调用方法!

花了我几个小时;)

【讨论】:

  • 这可能会阻止您的崩溃,但它不能回答您的问题。从您在这里所说的来看,网络连接没有理由影响您使用 Core Data 的能力。你已经隐藏了问题,但你还没有解决它。
  • @TomHarrington 感谢您对此感兴趣。基本上导致问题的原因是在 appDelegate 中,我设置了 setNetworkActivityIndi​​cator 和另一个用于在主视图上显示自定义 UIView 的功能(用于错误或互联网连接等)。在主视图中,我在 loadPosts 函数中设置了 CoreData,我正在访问它们并使用 AppDelegate 中的这两个函数。当我删除这些(从 AppDelegate 中删除它们并删除用于在主视图中访问它们的代码)时,CoreData 再次工作......
  • 现在是的,我基本上找到了解决此问题的临时解决方案,但不知道我还能做什么...请让我知道您的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多