ios - 核心数据 : how to just delete and rebuild the data store?

标签 ios core-data core-data-migration

我在不需要保存用户数据的 iOS 7+ 应用程序中使用 Core Data,应用程序需要的所有数据都被请求到服务,并且可以随时恢复。因此,如果我在下一次应用程序更新中更改我的数据模型,我可以毫无问题地删除所有以前的数据并再次请求它们。但是我不知道如何在不执行迁移的情况下简单地用新的数据模型替换以前的数据模型,因为看起来我不需要那样做...

提前致谢

最佳答案

如果您的目标是 iOS 9 或更高版本,则使用 Swift 解决方案

共享的 CoreData 管理器:

class CoreDataContext {
    static let datamodelName = "CoreDataTests"
    static let storeType = "sqlite"

    static let persistentContainer = NSPersistentContainer(name: datamodelName)
    private static let url: URL = {
        let url = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0].appendingPathComponent("\(datamodelName).\(storeType)")

        assert(FileManager.default.fileExists(atPath: url.path))

        return url
    }()

    static func loadStores() {
        persistentContainer.loadPersistentStores(completionHandler: { (nsPersistentStoreDescription, error) in
            guard let error = error else {
                return
            }
            fatalError(error.localizedDescription)
        })
    }

    static func deleteAndRebuild() {
        try! persistentContainer.persistentStoreCoordinator.destroyPersistentStore(at: url, ofType: storeType, options: nil)

        loadStores()
    }
}

仅在 appDelegate 中调用 loadStores 一次,并在您想要删除和重建数据库时调用 deleteAndRebuild :)

关于ios - 核心数据 : how to just delete and rebuild the data store?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29027270/

相关文章:

iphone - 我如何从 iphone 中删除 coredata

ios - NSMutableAttributedString 使用自定义字体崩溃

iphone - 蓝牙警告 Xcode?

iphone - 来自 SQLite 数据库的核心数据 "Upsert"

iphone - 自定义 NSEntityMigrationPolicy 关系

ios - .appname.sqlite.migrationdestination_xxxx 文件是什么?它会导致sql损坏错误吗?

ios - 无法将文件添加到 Xcode 项目

ios - 动画时无法点击注释

sqlite - 在 iOS 项目中管理 coredata/sqlite 数据库生命周期

ios - 无法在iOS中读取database.sqlite文件(没有这样的表METADATA)