NSPersistentContainer不会创建数据库文件

时间:2017-09-05 15:48:18

标签: ios swift database core-data

我正在创建一个NSPersistentContainer来保存一些数据,但即使在上下文中调用save()也不会创建任何数据库文件。

我用于创建NSPersistentContainer的代码是:

let container = NSPersistentContainer(name: "Model")

let description = NSPersistentStoreDescription()
description.shouldInferMappingModelAutomatically = true
description.shouldMigrateStoreAutomatically = true

container.persistentStoreDescriptions = [description]

container.loadPersistentStores { ... }

1 个答案:

答案 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 { ... }