我正在创建一个NSPersistentContainer来保存一些数据,但即使在上下文中调用save()
也不会创建任何数据库文件。
我用于创建NSPersistentContainer的代码是:
let container = NSPersistentContainer(name: "Model")
let description = NSPersistentStoreDescription()
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true
container.persistentStoreDescriptions = [description]
container.loadPersistentStores { ... }
答案 0 :(得分:1)
我原以为通过NSPersistentStoreDescription设置自动迁移选项不会有问题,而且Container会使用默认的存储文件路径;但它不是。
事实证明,该默认路径没有回退,所以必须提供自己的路径,以解决问题:
let container = NSPersistentContainer(name: "Model")
let dbURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!.appendingPathComponent("DB.sql")
let description = NSPersistentStoreDescription(url: dbURL)
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true
container.persistentStoreDescriptions = [description]
container.loadPersistentStores { ... }