【问题标题】:Core Data with both static pre-populated and dynamic user data包含静态预填充和动态用户数据的核心数据
【发布时间】:2020-04-27 22:00:30
【问题描述】:

在我的项目中,我在 Core Data 中预先填充了数据,即。我有一个在首次启动时复制到用户文件夹中的 sqlite 文件,但是我也有用户生成的用户数据,在这种情况下,无论如何我可以使用单个数据模型吗?我知道我可以创建两个模型,一个是静态模型,一个是为用户模型,但只是想知道是否有更好的方法。 谢谢!

更新: 我担心的是,虽然它适用于第一个版本,但在后续版本中,如果我需要更新静态数据,它将是一个新的 sqlite 文件,它被复制到用户文件夹中,这将覆盖现有的用户数据。

【问题讨论】:

    标签: ios swift core-data


    【解决方案1】:
    1. 问题:[...] 我可以使用单一数据模型吗?

    是的。核心数据模型有 配置 的概念。你可以在这里了解它:NSManagedObjectModel。这允许您将一个数据模型划分为多个部分。对于 OP 中描述的用例,您需要两个部分或配置:“StaticData”和“UserData”。 “StaticData”包含仅会随着应用更新(新版本)而改变的实体和数据。 “UserData”保存用户数据。您需要相应地设计数据和外键,使两个数据集的实体在应用程序的生命周期内“良好链接”。 (如果您无法从头到尾确保这一点,则需要为每个版本设计额外的数据迁移处理)。

    1. 问题/用例:仅更新静态数据不覆盖用户数据。

    每个“配置”(参见 1.)都有自己的持久核心数据存储(SQLite 文件)。对于指定的用例,不能从备份中排除包含用户数据的文件,但必须从备份中排除静态数据。您可以在此处了解如何从备份中排除文件和目录:NSURLIsExcludedFromBackupKey。新版本发布后,空的用户数据将被备份中的用户数据覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-24
      • 2012-01-10
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多