如何简单地删除旧的核心数据并重建新的?
How to simply delete old core data and rebuilt the new one?
我尝试将 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
但我的数据主要是图像和应用程序崩溃,因为它占用大量内存。所以我想删除旧数据模型及其数据,并在用户更新他们的应用程序时创建空的新模型数据。如何做到这一点?
如果数据模型发生变化,您只需检查数据库文件的模型即可。如果不是新的,请删除 StoreCoordinator 中指定的文件 NSFileManager
并再次初始化 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 中的文本文件。你只需要一个标志来检查,数据库是否已经 updated/cleaned.
然后您也可以像上面那样删除数据库或获取所有对象并删除它们。
我尝试将 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
但我的数据主要是图像和应用程序崩溃,因为它占用大量内存。所以我想删除旧数据模型及其数据,并在用户更新他们的应用程序时创建空的新模型数据。如何做到这一点?
如果数据模型发生变化,您只需检查数据库文件的模型即可。如果不是新的,请删除 StoreCoordinator 中指定的文件 NSFileManager
并再次初始化 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 中的文本文件。你只需要一个标志来检查,数据库是否已经 updated/cleaned.
然后您也可以像上面那样删除数据库或获取所有对象并删除它们。