【问题标题】:Migrating from Core data to sqlite in new update of app在应用程序的新更新中从核心数据迁移到 sqlite
【发布时间】:2013-08-19 13:58:39
【问题描述】:

我有一个使用核心数据的应用程序(比如 1.0 版),现在我已经使用 sqlite 更新了该应用程序,而对于新的更新,我根本没有使用核心数据(我们称之为 1.1 版),但是我保留了我的数据库名称和表的所有列名,与之前的核心数据应用程序相似。

我的疑问是,如果用户更新到使用 sqlite 的新版本(1.1)会有什么主要或次要影响。如果是的话,它会不会有某种数据丢失或任何崩溃,那么请通过提供任何链接或建议来指导我

为了避免数据丢失,我计划按照本文所述将数据从核心数据分块传输到 sqlite 应用程序,所以我这样做是否正确,如果我错过了任何有价值的步骤,请告诉我。

Migrating user data stored in sqlite to core data in app upgrade

谢谢

【问题讨论】:

  • 您是否尝试过通过升级自己的应用程序来进行测试?

标签: ios core-data sqlite


【解决方案1】:

如果您的操作正确且语法正确,用户就不会丢失任何数据。 我的理解是,在您的下一个版本的应用程序中,您将通过任何 sqlite 框架管理数据,那么您只需要 .sqlite 数据文件。要获取它的 .sqlite 文件路径,您可以:

NSString *dataFilePath = [[[self applicationDocumentsDirectory] path]
                           stringByAppendingPathComponent: @"YourAppName.sqlite"];
    NSURL *dataFileUrl = [NSURL fileURLWithPath:storePath];

applicationDocumentsDirectory方法这样实现时:

- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

如果我理解不正确,请写在 cmets 中。

【讨论】:

  • 感谢回复,旧数据会自动迁移到新的sqlite文件还是需要添加旧版本数据迁移到新版本的代码?
  • 迁移需要添加代码。可能我不完全理解你。我写的是,如何获取旧 .sqlite 文件的路径。您可以将此文件复制到您想要的位置并使用它。事实上,如果您使用核心数据,您只需使用核心数据方法管理此文件的数据,如果您有 .sqlite 文件,则可以使用其他框架方法(不是核心数据框架)管理其数据。如果我的回答对你有帮助,请检查一下。
  • 例如:一旦我开发了一个应用程序,我需要创建一些数据。我使用核心数据框架工作创建了一个 sqllite 文件,在管理此 .sqlite 文件的数据后,我使用任何 sqlite 框架的 SQLiteAccess 类。
猜你喜欢
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多