核心数据错误:在没有 NSManagedObjectContext 的情况下无法获取

Hem*_*Odd 2 core-data ios xmppframework swift

XMPPFramework在 Swift 中使用库,它使用 Core Data 提供消息历史存储。我正在尝试使用以下函数从存储中请求存档消息:

func getChatHistory() {

    guard let context = xmppMessageStorage.mainThreadManagedObjectContext else {return}
    var entityDescription = NSEntityDescription.entity(forEntityName: "XMPPMessageArchiving_Message_CoreDataObject", in: context)
    var request = NSFetchRequest<NSFetchRequestResult>(entityName: "XMPPMessageArchiving_Message_CoreDataObject")
    request.entity = entityDescription
    do {
        var messages = try request.execute()
        print("Archived Messages: \n\(messages)")
    } catch let error {
        print("Error fetching chat history: \(error)")
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我执行该函数时,我收到以下错误:

错误域=NSCocoaErrorDomain 代码=134060 “发生核心数据错误。” UserInfo={message=不能在范围内没有 NSManagedObjectContext 的情况下获取}

我无法理解为什么会发生这种情况,因为我在代码中正确设置了上下文。如果有人能帮助我理解这里出了什么问题,我将不胜感激。

小智 5

尝试更换

request.entity = entityDescription
do {
  var messages = try request.execute()
  print("Archived Messages: \n\(messages)")
} catch let error {
  print("Error fetching chat history: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

do {
  let messages = try context.fetch(request)
  print("Archived Messages: \n\(messages)")
} catch {
  print("Error fetching chat history:", error)
}
Run Code Online (Sandbox Code Playgroud)