我有一个核心数据实现。该堆栈是使用 NSPercientContainer 加载的。在设置过程中,我在 NSPersistentStoreDescription 上设置了 NSPersistentHistoryTrackingKey。
description.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
Run Code Online (Sandbox Code Playgroud)
我正在尝试沿着这条线实现渐进式迁移https://williamboles.me/progressive-core-data-migration/(顺便说一句,这是一篇很棒的文章!)
我遇到的第一个问题是在 WAL 中强制设置检查点。代码非常简单:
func forceWALCheckpointingForStore(at storeURL: URL) {
guard let metadata = NSPersistentStoreCoordinator.metadata(at: storeURL), let currentModel = NSManagedObjectModel.compatibleModelForStoreMetadata(metadata) else {
return
}
do {
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: currentModel)
let options = [NSSQLitePragmasOption: ["journal_mode": "DELETE"]]
let store = persistentStoreCoordinator.addPersistentStore(at: storeURL, options: options)
try persistentStoreCoordinator.remove(store)
} catch let error {
fatalError("failed to force WAL checkpointing, error: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud)
当 NSPersistentStoreCoordinator 运行 addPersistentStore 时会出现此问题。我收到以下错误:
存储在没有 NSPersistentHistoryTrackingKey 的情况下打开,但之前已使用 …