【问题标题】:How to properly combine .plist data and CoreData?如何正确组合 .plist 数据和 CoreData?
【发布时间】:2023-03-25 15:00:01
【问题描述】:

假设我有这个类层次结构:

protocol Location {}
class Planet: Location {
}

// That's a spot on some planet
class Site: Location {
   var planet: Planet
}

这就是我想要实现的。 我想通过.plist 文件添加行星(这是我认为最适合的)。

那些是存在于宇宙中的预先添加的行星。但是,每个星球都有用户创建的位置。因此,我需要使用 CoreData 保存这些。

我不知道该怎么做。如何使用我在(使用.plist)中“硬编码”的这个类层次结构以及CoreData 模型/对象?

例如:如何在 CoreData 中创建站点 entity?我不能只添加Planet 类型的属性planet,据我所知,这在CoreData 中是不可能的。

对此的一般方法是什么?我希望你能理解我的问题,这很难描述,因为这对我来说是新的。

【问题讨论】:

    标签: ios core-data plist


    【解决方案1】:

    在核心数据中创建

    • 实体Planet
    • 实体Site
    • PlanetSite 的一对多关系

    【讨论】:

    • 但是行星不是使用 CoreData 保存的。所有“对象”都存储在.plist 文件中。如果我创建了一个Planet 实体,我需要将所有行星保存到设备的数据库中,对吗?还是我混淆了什么?
    • 您问如何在 CoreData 中创建站点实体? .我建议使用核心数据作为主数据库,使用 plist 文件作为初始数据集。基本上你不应该同时使用属性列表和核心数据。
    • 是的,这正是我问的。但我也说过行星没有使用 CoreData。不过,使用 CoreData 作为主数据库听起来是个不错的解决方案。
    【解决方案2】:

    按照以下步骤操作:

    1. 从你的包中获取 plist 地址
    2. 将 plist 内容读入数组
    3. 遍历数组,根据需要插入新的核心数据对象,填充 plist 中定义的属性
    4. 保存上下文

    如果您觉得其中的任何内容难以理解,您需要进一步挖掘,也许可以通过遵循一些教程。对于这些步骤的每个子问题,这个平台上都有很多答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 2020-09-04
      • 2021-02-10
      相关资源
      最近更新 更多