核心数据错误:如果没有作用域中的NSManagedObjectContext,则无法获取

问题描述 投票:1回答:1

我正在Swift中使用XMPPFramework库,该库使用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)")
    }

}

但是,当我执行功能时,出现以下错误:

错误域= NSCocoaErrorDomain代码= 134060“核心数据错误发生。“ UserInfo = {message =如果没有作用域中的NSManagedObjectContext}

我无法理解为什么会这样,因为我在代码中正确设置了上下文。如果有人可以帮助我了解这里的问题,我将不胜感激。

ios swift core-data xmppframework
1个回答
1
投票

尝试替换

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

do {
  let messages = try context.fetch(request)
  print("Archived Messages: \n\(messages)")
} catch {
  print("Error fetching chat history:", error)
}
© www.soinside.com 2019 - 2024. All rights reserved.