Swift Core Data сохраняется в / dev / null, поэтому он находится только в памяти - PullRequest
0 голосов
/ 20 сентября 2018

Я использую Swift 4 и NSPersistentContainer для очень простой модели данных.У меня есть 1 сущность и несколько атрибутов плюс один индекс.Когда я впервые создал это, приложение сохраняло данные в реальном магазине.Затем я добавил один атрибут, индекс и настройку для автоматической миграции.Теперь выходные данные отладки CoreData показывают мне: CoreData: annotation: Соединение с файлом базы данных sqlite в "/ dev / null" Из-за этого мои данные не сохраняются между сессиями.Есть ли способ указать файл базы данных sqlite?Могу ли я вернуться к старому файлу?

var dataContainer: NSPersistentContainer = {
  let container = NSPersistentContainer(name: "MyProject")
  // Auto migrate data to new version
  let description = NSPersistentStoreDescription()
  description.shouldMigrateStoreAutomatically = true
  description.shouldInferMappingModelAutomatically = true
  container.persistentStoreDescriptions = [description]

  container.loadPersistentStores(completionHandler: { (storeDescription, error) in
  if let error = error {
    let msg = "\(error)"
    os_log("dataContainer: loadPersistentStores Error = %@", msg)
  }
  })
  container.viewContext.name = "MyProject"
  return container
}()

1 Ответ

0 голосов
/ 21 сентября 2018

Когда вы создаете экземпляр NSPersistentStoreDescription, у вас есть возможность передать URL-адрес.Вот ссылка на документацию , а вот хорошо объясненный пост по теме

let container = NSPersistentContainer(name: "NameOfDataModel")

let storeURL = try! FileManager
        .default
        .url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
        .appendingPathComponent("NameOfDataModel.sqlite")

let storeDescription = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [storeDescription]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...