Ошибка в основных данных: невозможно извлечь без NSManagedObjectContext в области - PullRequest
2 голосов
/ 05 февраля 2020

Я использую библиотеку 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)")
    }

}

Однако, когда я выполняю функцию, я получаю следующую ошибку:

Error Domain = NSCocoaErrorDomain Code = 134060 «Произошла ошибка основных данных». UserInfo = {message = Невозможно извлечь без NSManagedObjectContext в области}

Я не могу понять, почему это происходит, поскольку я правильно устанавливаю контекст в своем коде. Буду признателен, если кто-нибудь поможет мне понять, что здесь не так.

1 Ответ

1 голос
/ 05 февраля 2020

Попробуйте заменить

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)
}
...