iOS - Основные данные - Создание пустого NSManagedObjectContext - PullRequest
0 голосов
/ 08 мая 2019

Мой Core Data стек выглядит следующим образом:

  • Контекст управляемого объекта приватной очереди (родительский)
  • Контекст управляемого объекта главной очереди (дочерний)

Моя проблема в том, что я хочу создать функцию Поиск , используя ТОЛЬКО данные, загруженные с сервера. Идеальным решением было создание нового пустого NSManagedObjectContext (который будет использоваться в качестве временного контекста записи / чтения) без необходимости иметь Persistent Store или Parent, но Xcode потерпит крах.

Есть альтернативы?

PS. Еще одно решение - иметь флаг tempAttribute (атрибут bool), который будет установлен на true только в текущем контексте (у которого есть родительский контекст Контекст управляемых объектов в частной очереди * 1026). * но я хочу этого избежать.

1 Ответ

0 голосов
/ 09 мая 2019

Для контекста управляемого объекта действительно требуется NSPersistentStore, но существует один тип NSPersistentStore , NSInMemoryStoreType, который фактически не сохраняет данные на диск.Я думаю, это то, что вы ищете.Вот некоторый код Swift для создания контекста управляемого объекта с таким постоянным хранилищем в памяти :

// Create Core Data Stack
guard let dataModel = NSManagedObjectModel.mergedModel(from: [Bundle.main]) else {return}
let psc = NSPersistentStoreCoordinator(managedObjectModel: dataModel)
do {
   try psc.addPersistentStore(ofType: NSInMemoryStoreType,
                   configurationName: nil,
                                  at: nil,
                             options: nil);
} catch {
    print("Error creating store: \(error)")
}
let moc = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
moc.persistentStoreCoordinator = psc

Хороший дополнительный вопрос: Почему Apple вызываетэто NS Постоянный Сохранить, если не все его типы являются постоянными? Ну, может быть, они добавили тип хранилища в памяти в последнюю минуту перед тем, как MacOS 10.4 был заморожен длявыпустить и не успел сменить название:)

Вам также следует прочитать различия между типами магазинов

...