我已经在Swift 5中编写了这个应用程序,并且已经在App Store中上线。
现在,我只想添加一个新的单个布尔属性到coredata中的一个现有实体。
为此,我采取了以下步骤:
1.在Project. xcdatamodeld中添加了版本(在其中自动创建了Project 2.xcdatamodel文件)
1.将此版本设置为默认版本
1.向此新版本文件中的实体添加一个属性。
1.已将属性应该自动迁移存储和应该自动Infermapping模型添加到应用委托类中的NSPersistentContainer。
- 发行日期:**
在应用程序中,我能够成功地将数据保存在coredata中,并从任何ViewController中的coredata中检索数据,但如果应用程序从启动时打开,则无法找到之前的文件并重新创建coredata文件。
每当我打开应用程序时,它都会在xCode控制台中显示错误:
Connecting to sqlite database file at "/dev/null"
- 应用委托代码:**
// MARK: - Core Data stack
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "Project")
let description = NSPersistentStoreDescription()
description.shouldMigrateStoreAutomatically = true
description.shouldInferMappingModelAutomatically = true
container.persistentStoreDescriptions=[description]
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Unresolved error \(error), \(error.userInfo)")
}
})
return container }()
- 我遵循的教程:* Medium
3条答案
按热度按时间sqserrrh1#
您需要指定实际模型数据库位置的URL。
l5tcr1uw2#
错误消息可能表示应用不知道在何处查找或保存数据库文件。短语
"/dev/null"
表示在内存存储中。尝试使用
而不是当前示例化。
kmbjn2e33#
将
container.persistentStoreDescriptions = description
更改为container.persistentStoreDescriptions.append(description)
后,此问题已得到修复。完整代码: