包含静态预填充和动态用户数据的核心数据

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

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

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

【讨论】:

以上是关于包含静态预填充和动态用户数据的核心数据的主要内容,如果未能解决你的问题,请参考以下文章

iPhone核心数据预设

预填充核心数据存储:使用 JSON 属性列表还是 XML 文件?

编辑在 IOS 应用程序中管理的预填充 sqlite 数据库核心数据

如何用应用商店中的新版本替换 iOS 应用中预先填充的核心数据?

使用默认值预加载核心数据表

PayPal Adaptive Payment Api 预填充用户数据