gpt4 book ai didi

ios - 如何简单地删除旧的核心数据并重建新的?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:10 26 4
gpt4 key购买 nike

我尝试将 coreData 迁移到新版本,我正在执行以下步骤:

Add a new Model Version (Select name.xcdatamodeld then Editor->Add model Version) before making any changes, if you have an app already submitted to App Store which is using the earlier model version.

Then, Add a new file from Core Data Tab, as Mapping Model Select, Source Model (Model Version which the submitted App is using) Destination Model (Model Version in which you have done the Changes)

source

但我的数据主要是图像和应用程序崩溃,因为它占用大量内存。所以我想删除旧数据模型及其数据,并在用户更新他们的应用程序时创建空的新模型数据。如何做到这一点?

最佳答案

如果数据模型发生变化,您可以简单地检查数据库文件的模型。如果不是新的,用 NSFileManager 删除 StoreCoordinator 中指定的文件,并再次初始化 StoreCoordinator 和 NSManagedContext 以创建一个新文件。

类似的东西(未经测试的代码):

var error: NSError
var applicationDocumentsDirectory: NSURL = NSFileManager.defaultManager().URLsForDirectory(NSDocumentDirectory, inDomains:NSUserDomainMask).lastObject
let storeURL: NSURL = applicationDocumentsDirectory.URLByAppendingPathComponent("Database.sqlite")
NSFileManager.defaultManager().removeItemAtPath(storeURL.path, error)

Swift 4 更新:

    do
{
var applicationDocumentsDirectory: URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
let storeURL: URL = applicationDocumentsDirectory.appendingPathComponent("Database.sqlite")
try FileManager.default.removeItem(atPath: storeURL.path)
}
catch
{
print(error.localizedDescription)
}

如果模型没有变化,则需要将更新的信息保存在任何地方。数据库本身或 UserDefaults 中的文本文件。您只需要一个标志来检查数据库是否已更新/清理。

然后您也可以像上面那样删除数据库或获取所有对象并删除它们。

关于ios - 如何简单地删除旧的核心数据并重建新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36714388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com