我的问题与迁移有关。我无法进行轻量级迁移,因为属性类型和新关系有很多变化。我没有时间进行繁重的迁移,因为代码不是我的,需要更快的交付。
可行的解决方法是,当应用程序升级时,应用程序应删除旧数据和数据模型,因为数据没有用,可以再次从服务器下载。在应用程序上是否完成启动,获取.db URL,然后将其删除并在升级后首次重新创建?
经过一番研究,所有方法都指向轻量级迁移。如果有更好的方法,请协助。
-(void) removeCoreDataAndReset{
NSError *error;
NSPersistentStoreCoordinator *storeCoordinator = storeCordinator;
for (NSPersistentStore *store in storeCoordinator.persistentStores) {
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:store.URL.path error:&error];
}
// Initialise managedobjectcontext , Store Coordinator etc
}
在此方法之后重新初始化所有内容,就像在statrt中所做的那样
若要删除持久性存储,需要删除:
-
实际的持久存储文件。它位于您放置的任何位置。当你打电话给
addPersistentStoreWithType:configuration:URL:options:error:
时,你告诉Core Data它在哪里,所以如果你不确定,请检查那里。 -
日志文件。它们将与持久存储文件具有相同的名称,但末尾添加了
-wal
和-shm
。这非常重要,因为在大多数情况下,几乎所有现有数据都在这些文件中。
您可以使用 上的方法删除文件 NSFileManager
.如果执行此操作,请在以任何方式访问核心数据之前执行此操作,即在创建任何类型的任何核心数据对象之前。