我的问题与移民有关。我不能进行轻量级迁移,因为属性类型和新关系有很多变化。我没有时间进行重量级迁移,因为代码不是我的,需要更快的交付。
可行的解决方法是,当应用程序升级时,应用程序应删除旧数据和数据模型,因为数据没有用,可以再次从服务器下载。在应用程序确实完成启动,获取.db URL并删除它并在升级后第一次重新创建它?
经过一番研究,所有方法都指向轻量化迁移。如果有更好的方法请帮助。
答案 0 :(得分:1)
-(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
中一样,在此方法之后重新初始化所有答案 1 :(得分:1)
要删除持久性商店,您需要删除:
实际的持久存储文件。它位于您放置的任何位置。当你拨打addPersistentStoreWithType:configuration:URL:options:error:
时,你告诉核心数据它在哪里,所以如果你不确定,请检查那里。
日记文件。它们与持久性存储文件具有相同的名称,但最后添加了-wal
和-shm
。 这非常重要,因为在大多数情况下,几乎所有现有数据都在这些文件中。
您可以使用NSFileManager
上的方法删除文件。如果您这样做,请在以任何方式访问Core Data之前,即在创建任何类型的任何Core Data对象之前执行此操作。